正则学习总结
修饰符
-
g
全文搜索 -
i
忽略大小写 -
m
多行搜索
元字符
原意文本字符是指123等, 元字符 是在正则表达式中有特殊含义的非字母字符
* + > & $ . | \ ( ) { } [ ]
-
\t
水平制表符 -
\v
垂直制表符 -
\n
换行符
字符类
符合某些特性的对象,一个泛指,而不是特指某个字符 可以使用元字符
[]
构建一个简单的类
例子:
表达式[abc] 把字符a或b或c归为一类,表达式可以匹配这类的字符, 若要匹配ab整体那就不用[]
'a1b2c3d4'.replace(/[abc]/g, 'x') -> 'x1x2x3d4'
并不是匹配abc一个整体
字符类取反
例子:
使用元字符 ^
在中括号[]
创建反向类/负向类 ,另一个意思是以xxx开始
表达式1 把字符以外(不是字符a或b或c的内容)的进行替换 中括号里面加 ^
'a1b2c3d4'.replace(/[abc]/g, 'x') -> 'axbxcxxx'
范围类
[0123456789]匹配数字 太累了
使用[a-z]连接两个字符表示从a-z的任意字符 闭区间
-
并不是特殊字符 若要匹配2017-03中的-
只需[0-9-]
预定义类及边界
量词
正则贪婪模式
d{3,6} 12345678 => x78
正则表达式在处理的时候会尽可能多的匹配,直到匹配失败,默认是贪婪模式
正则非贪婪模式
尽可能少的匹配,一旦成功匹配,不再继续尝试
做法很简单,在量词后加上?
即可
d{3,6}? 12345678 => xx78
分组
解决匹配整体的问题
使用()
达到分组的功能,使量词作用于分组
(byron){3}
或
使用|
可以达到或的效果,加了分组可以改变边界
反向引用
出现是变量,不是常量的概念替换, 利用$1 $2捕获分组代表
忽略分组
不希望捕获某些分组,只需要在分组内加上?:
即可
前瞻
对象属性
reg.objKey
当正则多次执行test方法的时候,匹配的结果会记忆上次匹配的位置,再循环到0重新开始 也就是lastIndex
简单解决方法是 正则不加g
标志 本身也就是为了看下有没有
正则方法
- test
- exec
字符串对象方法
- search
- match
- split
- replace
- abc ↩
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。