正则
知识点
- 单词边界:
/\bis\b/
\b匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是或不存在)\w(匹配字母或数字或下划线或汉字) - 修饰符(g/i/m)
m:多行匹配
- 元字符
(* + ? $ ^ . | \ ( ) { } [ ])
- 非打印字符
\cx
:匹配由x指明的控制字符\s
:匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
。 - 预定义类
字符 | 等价 | 含义 |
---|---|---|
. | [^\n\r] |
除了回车符和换行符之外的所有字符 |
\w |
[a-zA-Z_0-9] |
单词字符(字母、数字、下划线) |
- 边界 |
字符 | 含义 |
---|---|
\b |
单词边界,指[a-zA-Z_0-9]之外的字符 |
- 量词
出现多少次
字符 | 含义 |
---|---|
? | 出现零次或一次 |
* | 出现零次或多次(任意次) |
+ | 至少一次 |
贪婪与懒惰(非贪婪)
/\d{3,6}/
贪婪模式: 可能多的匹配
懒惰模式(量词后加?
):尽可能少的情况/\d{3,6}?/
反向引用之:
?:
/^(?:\d{4})[/-](\d{2})[/-](\d{2})$/
如果在反向引用中不想捕获年该如何操作? 加上 ?:即可.前瞻
正向前瞻(?=xxx),
负向前瞻(?!xxx)
- new RegExp(“pattern”)
不要忘记将 \ 进行转义,因为 \ 在字符串里面也是一个转义字符。
当正则需要传参的时候,一定要用全称的写法RegExp('\\b'+sClass+'\\b')
\1
重复子项其他
[\b]
:退格方法
search
正则去匹配字符串,如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回 -1
match
如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null'abc'.match(/(ab)(c)/)
["abc", "ab", "c"]
当match不加g的时候才可以获取到子项的集合
exec
- exec与match的关联:等价于不含有g全局标志的match.
- 但如果有g对exec本身的影响是,当一个具有g的正则表达式调用exec()时,他将该对象的lastIndex设置到紧接这匹配子串的字符位置.当第二次调用exec时将从
lastIndex所指示的字符位置开始检索.利用这个特点可以反复调用exec遍历所有匹配.等价于match具有g标志.
1 | str = "abbb34eftab0modabbbbb6"; |
不明白
- 问号两种含义:
- 放到量词后面是懒惰模式
- 放到字符后面是量词
*
与.
的区别
第一个是量词至少0个,第二个是预定义类