Javascript正则笔记

1. 生成正则表达式对象的方法
1. var rx = new RegExp(pattern, attributes)
参数pattern是正则表达式字符串
参数attributes是一个字符串,可以是i(表示忽略参数) m(表示多行匹配) g(表示全局匹配) ,也可以是它们的组合
2. var rx = /pattern/attributes
2. 正则表达式对象的属性
1. lastIndex
是一个整数,标示下一次开始匹配的字符位置,在执行exec方法时会自动修改这个位置。如果匹配完一个字符串后,再重新匹配另外一个字符串,应手动修改为0,表示从头开始匹配
2. .source 生成正则表达式对象的字符串,相当于Python中正则表达式对象的pattern属性
3. .global
是否有/g属性
4. .ignoreCase
是否有/i属性
5. .multiline
是否有/m属性
3. 正则表达式对象的常见方法
1. rx.test(string)
字符串是否匹配正则表达式
返回true或者false
2. rx.exec(string)
返回一个类数组对象,未匹配到返回null
该对象的第一个元素是匹配到的子符串,后面的元素是与分组子表达式匹配的字符串
该对象具有index和input两个属性
1. .index 匹配到的子串的位置
2. .input 用来匹配的字符串,即exec方法的string参数
当rx是全局模式时,可以多次执行exec方法直到返回null,从而获取所有的匹配
当rx对象执行exec方法匹配完一个字符串要匹配另外一个字符串的时候,应手动把rx.lastIndex设置为0
3. rx.compile(regex, modifier)
动态改变正则表达式对象,一般不用。
4. 支持正则表达式的String对象的方法
1. .search(rx)
返回与rx匹配的子串的起始位置,没有匹配到返回-1
会忽略rx的lastIndex和/g,从头开始匹配只匹配一次。
2. .replace(参数1,参数2)
参数1可以是被替换的字符串或者正则表达式
参数2可以是替换字符串或者生成替换字符串的函数
替换字符串可以有如下特殊格式:
$i 与正则表达式中第i个捕获分组匹配的文本
$& 与整个正则表达式匹配的文本
$` 正则表达式匹配到的字符串的左侧的文本
$' 正则表达式匹配到的字符串的右侧的文本
$$ $的字面值
Python中通过/i或者/g来引用
生成替换字符串的函数
函数可以有如下参数
1. 匹配到的子串
2. 0个或者多个与子表达式匹配的文本
3. 匹配到的字符串在原字符串中的索引位置
4. 原字符串
以上参数倘若声明,在执行方法时系统会自动传入
3. .split(seperator, howmany)
seperator:分隔符,可以是字符串或者rx
howmany: 可选,返回数组的最大长度,如果执行,则返回的数组不会超过指定的值,其他的被扔掉
功能:与.join()执行相反的操作
如果rx中有分组,则会按照整个正则表达式匹配的内容来分割,同时把分组匹配到的内容也添加到生成的数组中,这一点与Python中一样

4. string.match(rx)
参数是正则表达式对象,如果是字符串,则转换为正则表达式
如果rx有/g,则把所有与正则表达式匹配的内容放到一个数组中,但是不会保留子表达式(分组)匹配到的内容
如果rx没有/g,则只匹配一次,返回一个类似数组的对象
该对象第一个元素是与正则表达式匹配的文本
其他的元素则是与正则表达式子表达式(分组)匹配的文本
该对象具有两个属性index和input
index 表示匹配到的子串在原字符串中的位置
input 表示原字符串
注:
不推荐使用该方法,一般使用rx.exec(string)方法替代。

5. 总结
正则表达式一般具有匹配,搜索,替换,分割四大功能
分别对应rx.test(),rx.exec(),.replace(),.split()四个方法,其他的方法不是很常用。

你可能感兴趣的:(Javascript正则笔记)