IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 正则表达式中的特殊字符 -> 正文阅读

[JavaScript知识库]正则表达式中的特殊字符

1、正则表达式中的特殊字符

1.1 正则表达式的组成

一个正则表达式可以由简单的字符构成,比如 /abc/,也可以是简单和特殊字符的组合,比如 /ab*c/ 。其中特殊字符也被称为元字符,在正则表达式中是具有特殊意义的专用符号,如 ^ 、$ 、+ 等。

特殊字符非常多,可以参考:

  • MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
  • jQuery 手册:正则表达式部分
  • 正则测试工具: http://tool.oschina.net/regex

1.2 边界符

正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符。

边界符说明
^表示匹配行首的文本(以谁开头)
$表示匹配行尾的文本(以谁结束)

如果 ^ 和 $ 在一起,表示必须是精确匹配。

代码:

    <script>
        // 边界符 ^ $ 
        // 正则表达式里面不需要加引号 不管是数字型还是字符串型 也不要随便加空格
        var regexp = /abc/;  // /abc/ 只要包含有abc这个字符串返回的都是true
        console.log(regexp.test('abc'));    // true
        console.log(regexp.test('abcd'));   // true
        console.log(regexp.test('aabc'));   // true
        console.log(regexp.test('acb'));    // false
        console.log('---------------------------');
        var regexp1 = /^abc/;  // /^abc/ 以abc这个字符串开头的返回的都是true
        console.log(regexp1.test('abc'));    // true
        console.log(regexp1.test('abcd'));   // true
        console.log(regexp1.test('aabc'));   // false
        console.log('---------------------------');
        var reg1 = /^abc$/;   // 精确匹配 要求必须是 abc字符串才符合规范
        console.log(reg1.test('abc'));   // true
        console.log(reg1.test('abcd'));  // false
        console.log(reg1.test('aabcd')); // false
        console.log(reg1.test('abcabc')); // false
    </script>

1.3 字符类

字符类表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括号内。

1. [] 方括号

/[abc]/.test('andy') // true

后面的字符串只要包含 abc 中任意一个字符,都返回 true 。

2. [-] 方括号内部 范围符-

/^[a-z]$/.test(c') // true

方括号内部加上 - 表示范围,这里表示 a 到 z 26个英文字母都可以。

3. [^] 方括号内部 取反符^

/[^abc]/.test('andy') // false

方括号内部加上 ^ 表示取反,只要包含方括号内的字符,都返回 false 。

注意和边界符 ^ 区别,边界符写到方括号外面。

4. 字符组合

/[a-z1-9]/.test('andy') // true

方括号内部可以使用字符组合,这里表示包含 a 到 z 的26个英文字母和 1 到 9 的数字都可以。

代码:

    <script>
        //var rg = /abc/;  只要包含abc就可以 
        // 字符类: [] 表示有一系列字符可供选择,只要匹配其中一个就可以了
        var rg = /[abc]/; // 只要包含有a 或者 包含有b 或者包含有c 都返回为true
        console.log(rg.test('andy'));   // true
        console.log(rg.test('baby'));   // true
        console.log(rg.test('color'));  // true
        console.log(rg.test('abc'));    // true
        console.log(rg.test('red'));    // false
        console.log('------------------');

        var rg1 = /^[abc]$/; // 三选一 只有是a 或者是 b  或者是c 这三个字母才返回 true
        console.log(rg1.test('aa'));    // false
        console.log(rg1.test('a'));     // true
        console.log(rg1.test('b'));     // true
        console.log(rg1.test('c'));     // true
        console.log(rg1.test('abc'));   // false
        console.log('------------------');

        var reg = /^[a-z]$/; // 26个英文字母任何一个字母返回 true  - 表示的是a 到z 的范围  
        console.log(reg.test('a'));     // true
        console.log(reg.test('z'));     // true
        console.log(reg.test(1));       // false
        console.log(reg.test('A'));     // false
        console.log('------------------');

        // 字符组合
        var reg1 = /^[a-zA-Z0-9_-]$/; // 26个英文字母(大写和小写都可以)任何一个字母返回 true  
        console.log(reg1.test('a'));    // true
        console.log(reg1.test('B'));    // true
        console.log(reg1.test(8));      // true
        console.log(reg1.test('-'));    // true
        console.log(reg1.test('_'));    // true
        console.log(reg1.test('!'));    // false
        console.log('----------------');

        // 如果中括号里面有^ 表示取反的意思 千万和 我们边界符 ^ 别混淆
        var reg2 = /^[^a-zA-Z0-9_-]$/;
        console.log(reg2.test('a'));   // false
        console.log(reg2.test('B'));   // false
        console.log(reg2.test(8));     // false
        console.log(reg2.test('-'));   // false
        console.log(reg2.test('_'));   // false
        console.log(reg2.test('!'));   // true
    </script>

1.4 量词符

量词符用来设定某个模式出现的次数

量词说明
*重复0次或更多次
+重复1次或更多次
重复0次或1次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

代码:

    <script>
        // 量词符: 用来设定某个模式出现的次数
        var reg = /^a$/;
        console.log(reg.test('a'));   // true
        console.log(reg.test('aa'));  // false
        console.log('--------------------------------------');

        // 1. * 相当于 >= 0 可以出现0次或者很多次 
        var reg1 = /^a*$/;
        console.log(reg1.test(''));// true
        console.log(reg1.test('a'));// true
        console.log(reg1.test('aa'));// true
        console.log(reg1.test('aaaaaa'));// true
        console.log('--------------------------------------');

        // 2. + 相当于 >= 1 可以出现1次或者很多次
        var reg2 = /^a+$/;
        console.log(reg2.test(''));// false
        console.log(reg2.test('a'));// true
        console.log(reg2.test('aa'));// true
        console.log(reg2.test('aaaaaa'));// true
        console.log('--------------------------------------');

        // 3. ?  相当于 1 || 0
        var reg3 = /^a?$/;
        console.log(reg3.test(''));// true
        console.log(reg3.test('a'));// true
        console.log(reg3.test('aa'));// false
        console.log(reg3.test('aaaaaa'));// false
        console.log('--------------------------------------');

        // 4. {3 } 就是重复3次
        var reg4 = /^a{3}$/;
        console.log(reg4.test(''));// false
        console.log(reg4.test('a'));// false
        console.log(reg4.test('aa'));// false
        console.log(reg4.test('aaaaaa'));// false
        console.log(reg4.test('aaa'));// true
        console.log('--------------------------------------');

        // 5. {3, }  大于等于3
        var reg5 = /^a{3,}$/;
        console.log(reg5.test(''));// false
        console.log(reg5.test('a'));// false
        console.log(reg5.test('aa'));// false
        console.log(reg5.test('aaaaaa'));// true
        console.log(reg5.test('aaa'));// true
        console.log('--------------------------------------');

        // 6. {3, 16}  大于等于3 并且 小于等于16
        var reg6 = /^a{3,16}$/;
        console.log(reg6.test(''));// false
        console.log(reg6.test('a'));// false
        console.log(reg6.test('aa'));// false
        console.log(reg6.test('aaaaaa'));// true
        console.log(reg6.test('aaa'));// true
        console.log(reg6.test('aaaaaaaaaaaaaaaaaaaaa'));// false
    </script>

1.5 括号总结

  1. 大括号 量词符。里面表示重复次数。
  2. 中括号 字符集合。匹配方括号中的任意字符。
  3. 小括号 表示优先级。

可以在线测试:正则表达式在线测试小工具

1.6 预定义类

预定义类指的是某些常见模式的简写方式

预定类说明
\d匹配0-9之间的任意数字,相当于[0-9]
\D匹配所有0-9以外的字符,相当于[^0-9]
\w匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]
\W除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]
\s匹配空格(包括换行符、制表符、空格符等),相当于[\t\r\n\v\f]
\S匹配非空格的字符,相当于[^\t\r\n\v\f]
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 11:57:40  更:2021-08-19 11:58:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:12:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码