创建方法
1.利用RegExp对象来创建: var reg = new RegExp(/123/);
2.利用字面量创建:var reg = /123/
字符类
字符集用[]包裹
var rg = /[abc]/ 表示包含a或b或c
console.log(/[abc]/.test('a')); //t
console.log(/[abc]/.test('b')); //t
console.log(/[abc]/.test('c')); //t
console.log(/[abc]/.test('abc')); //t
console.log(/[abc]/.test('cba')); //t
console.log(/[abc]/.test('decba')); //t 只要字符串中包含在正则表达式字符集[ ]范围内的字符,就为true,而不是匹配第一个字符。
console.log(/[abc]/.test('d')); // f 字符集中没有d,为false
// 负向类
// 只要有一个不是数字就为true,匹配字符中的非数字字符
console.log(/[^0-9]/.test(1));
console.log(/[^0-9]/.test('123a'));
console.log(/[^0-9]/.exec('123a')); //a
console.log(/[^0-9]/.test('a'));
// 只要有一个不是小写字母就为true,匹配字符中的非字母字符
console.log(/[^a-z]/.test('a123'));
console.log(/[^a-z]/.exec('a9123')); //9
边界符:
^从字符串开头进行匹配
$从字符串结尾进行匹配
^$都存在可以理解为从开头匹配到尾部全都得符合要求,否则不满足
var rg = /^123$/ 表示精准匹配123
var rg = /^[abc]$/ 表示只能包含abc中的一个
量词符
量词用{}包裹
{n} 出现n次
{n,} 出现n次以上
{n,m} 出现n到m次
* 出现0次或多次
+ 出现1次或多次
?出现0次或1次
预定义类
\d 匹配数字[0-9]
\D 匹配非数字[^0-9]
\w 匹配任意的字母数字下划线[a-zA-z0-9_]
\W 匹配除了任意的字母数字下划线的字符[^a-zA-z0-9_],注意^在字符集[ ]中才表示'非'
\s 匹配空格(换行符 制表符 空格符),相当于[\t\r\n\v\f]
\S 匹配非空格字符,相当于[^\t\r\n\v\f], 注意^在字符集[ ]中才表示'非'
\b 单词边界
\B 非单词边界
[\u4e00-\u9fa5] 匹配中文
正则表达式后
g 全局匹配
i 不区分大小写
m 多行匹配
括号总结
大括号:包裹量词符号
中括号:包裹字符集
小括号:提高优先级 // /^123{3}$/ 它表示3要重复出现3次 而不是123重复3次
详情可参考菜鸟教程:https://www.runoob.com/regexp/regexp-tutorial.html
正则表达式分组
内部分组:\1 \2
外部分组:$1 $2