JavaScript 正则表达式笔记
js通过内置对象RegExp支持正则表达式 实例化RegExp对象的两种
1.字面量:
var reg = /\bis\b/g;
2.构造函数
var reg = new RegExp('\bis\b','g');
修饰符
g:global,全文搜索,不添加,搜到第一个匹配就停止
i: ignore case,忽略大小写,正则默认大小写敏感
m: multiple lines 多行搜索
元字符:
正则表达式由两种基本字符类型组成:
--原义文本字符
—元字符
元字符是在正则表达式中有特殊含义的非字母字符
*、+、?、$、^、.、|、\、()、{}、[]
\b 无符号 空格…
\t 水平制表符
\v 垂直制表符
\n 换行符
\r 回车符
\0 空字符
\f 换页符
\cX 与X对应的控制字符是(Ctrl+X)
元字符在不同的场景作用不同
字符类:
[abc] 利用元字符来构建一个简单的类,所谓类是指符合某些特性的对象,一个泛指而不是特指某个字符,表达式[abc]把字符a或b或c归为一类,表达式可以匹配这类的字符。
范围类:
[a-zA-z] 规定一个范围
预定义类:
. [^\r\n] 除了回车符和换行符之外的所有字符
\d [0-9] 数学字符
\D [^0-9] 非数字字符
\s [\t\n\x0B\f\r] 空白符
\S [^\t\n\x0B\f\r] 非空白符
\w [a-zA-Z_0-9] 单词字符(字母,数字下划线)
\W [^a-zA-Z_0-9] 非单词字符
匹配一个ab+数字+任意字符的字符串
ab\d.
量词:
? 出现零次或一次(最多出现一次)
- 出现一次或多次(至少出现一次)
-
出现零次或多次(任意次)
{n} 出现n次
{n,m} 出现n到m次
{n,} 至少出现n次\d{20}\w\d?\w+\d*\d{3}\w{3,5}\d{3,}
边界:
正则表达式还提供了几个常用的边界匹配字符
^ 以xxx开始
$ 以xxx结束
\b 单词边界
\B 非单词边界
字符类取反:
[^abc] 使用元字符^创建 反向类/负向类,不属于此类的内容
贪婪模式:
12345678 \d{3,6} //123456,78
非贪婪模式:
让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试就是非贪婪模式
做法很简单,在量词后加上?即可
‘123456789’.match(/\d{3,5}?/g)
["123","456","789"]
分组:
表达式加(),$1获得值
取消分组:
不希望捕获某些分组,只需要在分组内加上?:就可以
(?:Byron).(ok)
前瞻
正则表达式从文本头部开始解析,文本尾部方向,称为“前”
前瞻就是在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾/后瞻方向相反
正向前瞻 exp(?=assert)
‘a2*34v8’.replace(/\w(?=\d)/g,'x')
负向前瞻 exp(?!assert)
‘a2*34v8’.replace(/\w(?!\d)/g,'x')
正向后顾 exp(?<=assert) JavaScript不支持
负向后顾 exp(?<!assert) JavaScript不支持
对象属性:
global:是否全文搜索
ignore case:是否大小写敏感,默认是fase
multiline:多行搜索,默认值是false
lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置
source:正则表达式的文本字符串
共同学习,写下你的评论
评论加载中...
作者其他优质文章