1. 正则表达式语法
1.1 表示方法
- `//`字面量模式,`/表达式/修饰符`
- 使用`new RegExp(字符串,修饰符 | 正则表达式)`构造函数。
在ES5中,参数是正则表达式时不允许传入第二个参数。
在ES6中,当第一个参数为正则表达式是,可以传入第二个参数修饰符,这时第二个参数的修饰符会覆盖第一个参数正则表达式之中的修饰符。
1.2 字符类[]
1.3 重复
{n,m} :出现n<= 次数 <= m
{n,} : >=n 次
{n} : n次
? : {0,1}
+ : {1,}
* : {0,}
以上情况是尽可能多的匹配,称为贪婪匹配. 在重复次数后面加上“?”,如“+?”则为尽可能少的匹配,称为非贪婪匹配。
var r1 = /a+/
var r2 = /a+?/
var str = 'aaa'
str.match(r1) //['aaa']
str.match(r2) //['a']
1.4 位置
1.5 修饰符
i :大小写不敏感
g :全局匹配。即找到所有,而不是找到一个就停止。
y :(ES6新增)粘连修饰符。与g 相似。但y 下一次开始查找时从匹配的下一个位置开始,即如果下一个位置不匹配则返回null.而g 只要剩余位置存在匹配即可。设计目的是为了让^ 在全局范围内有效。
m :多行匹配。即匹配一行的开头结尾 + 字符串的开头或结尾
u :(ES6新增)。主要针对ES6对Unicode字符进行扩展之后的匹配。包括对. ,{} 中的改善。详见阮一峰老师的ES6教程
1.6 选择
1.7 分组/引用
圆括号的作用:
1. 即把很多项组合成独立的单元来处理。
2. 定义子模式。即在已匹配中找到符合圆括号内的匹配项。
3. 在正则表达式后部引用前面的子表达式。即后面可以使用`n`来表示匹配的表达式是前面的括号中的表达式.`n`中的n代表第几个括号。
2. String的正则方法
search() :传入正则表达式,若传入的是字符串,则会转为正则表达式。返回第一次匹配项的起始位置。若不匹配,则返回-1.
replace() :第一个参数可以是正则表达式也可以是字符串,第二个参数是要将与第一个参数匹配的匹配项替换的东西,可以是函数或字符串。若为函数,则参数为macth,(p1,p2..),offset,str.match为匹配项,p2..)为第n个括号匹配的字符串,offset是匹配项在调用字符串中的位置,str是调用的字符串。若正则表达式中含//g ,则会将全部匹配项都替换。返回替换后的字符串。
match() :返回数组。若包含全局修饰符g ,则数组元素分别为每次的匹配项。若为传入g ,则数组第一个元素是匹配项,后面分别为圆括号的匹配项。返回的数组包含input 和index 属性。input 表示调用字符串,index 表示匹配项在调用字符串中的索引。
split() :返回数组。传入分隔符或正则表达式。
3. RegExp对象
3.1 RegExp属性
以下属性返回布尔值。即是否包含相应修饰符。
- `global`
- `multiline`
- `ignoreCase`
- `sticky`:是否包含`y`修饰符
以下不返回布尔值
- `lastIndex`:整个字符串下一次搜索开始的位置。
- `source`:正则表达式文本。
- `flags`:使用了哪些修饰符
3.2 RegExp方法
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|