经常使用的修饰符
i: ignoreCase 忽略大小写匹配
m: multiline 多行匹配
g: global 全局匹配
复制代码
经常使用特殊元字符
\d 是0-9之间的一个数字
\D 非0-9之间的任意字符
\w '数字,字母,下划线'中任意一个 >>[0-9a-zA-Z_]等价于\w
\W 匹配除了'数字,字母,下划线'中任意一个
\s 匹配任意一个空白字符(包括\t制表符[TAb键四个空格] 换行符\n)
\S 匹配除了空白字符 (空格 制表符\t 换行符)
\b 匹配边界符 'bai' (b左边和i右边就是边界) 'bai-du'(b左边,u右边,i右边,d左边)
\B 匹配除了边界符
\n 匹配一个换行符
\ 转义字符(把一个普通字符转译为特殊字符,例如:\d,把一个特殊含义的转换为普通意思,例如:\. 此外的.就不是任意字符,而是一个小数点。)
. 不单单是小数点,表明除了\n之外的任意字符。
^ 以某个元字符开头
$ 以某个元字符结尾
x|y x或y中的任意一个
[xyz] x或y或z中的任意一个
[^xyz] 除了x\y\z之外的任意字符
[a-z] 获取a-z中的任意字符([0-9] 等价于\d ...)
[^a-z] 除了a-z中的任意字符
() 正则分组
(?:) 当前分组只匹配不捕获
(?=) 正向预查
(?!) 负向预查
量词元字符:
? 表明出现0到1次
* 表明出现0到屡次
+ 出现1到屡次
复制代码
1.中括号中出现的元字符通常都是表明自己含义的
2.中括号中出现的两位数,不是两位数,而是两个数字中任意一个
列:
let reg = /^[18]$/;
console.log(reg.test('18'));
console.log(reg.test('1'));
console.log(reg.test('8'));
let reg = /^[.]+$/;
let reg = /^.+$/;
console.log(reg.test('n'));
console.log(reg.test('1'));
console.log(reg.test('...'));
let reg = /^[12-65]$/;
console.log(reg.test('13'));
console.log(reg.test('65'));
let reg = /^[\d]$/;
console.log(reg.test('0'));
console.log(reg.test('d'));
复制代码
正则分组捕获
let reg = /^(1|[89])|([2-5]|\d)|(6[0-5])$/
let reg = /^\[Object, .+\]$/
let reg = /^(a-z)(a-z)\2\1$/;
console.log(reg.test('oppo'));
let reg = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{2})(\d)(\d|X)$/;
console.log(reg.exec('130826199102175313'))
复制代码