一、术语
- 字面字符:可以直接显示的字符
- 元字符:有特殊含义的字符,有()[]{} .*+? ^$|
- 转义字符:反斜杠
- 元序列:有特殊含义的字符序列
- 字符类:字符集合其中取一
- 数量表示符:用于表示匹配项重复的次数
二、基本概念
- 正则表达式包含模式和标志
- ^:匹配字符串开头当设置了m时匹配行开头
- $:匹配字符串的结尾,当设置了m时还匹配换行符前面的位置。
- .:匹配任意单个字符,当设置了s时匹配换行符。
- 数量表示符
- *:重复0或者多次
- .:重复1或者多次
- ?:重复0或者1次
- {m}:重复m次
- {m,}:重复m次m或以上
- {m,n}:重复m到n次数
默认情况,正则会执行无限匹配,即尝试尽可能多的匹配之后才进入正则下一部分。可以在数量符后面添加?更改为惰性匹配,这时会匹配最少的字符就进入之后的模式。
6.字符类(字符集合)[]
定义匹配集合中任意单个字符。在字符类中,通常在正则里的元字符和元序列不具特殊含义不需要转义。除了以下几个
]-^,其中-用于表示范围,^表示取反,即不在字符类中,仅当在开头才有特殊含义才需要反转。
7.使用组()
捕获组:可以在正则中用12的形式逆向引用组,在字符中可以通过
1
2的形式引用。
非捕获组:(?:)
正向前捕获组:(?=)
负向前捕获组:(?!)
命名捕获组:(?P)
三、标志和属性
- g:全局匹配搜索,多个匹配。
- i:不区分字母大小写。
- m:设置$可以访问行头,设置^可以访问行尾。
- x:允许扩展,自动忽略空格字符。
- lastIndex:指定字符串中的索引位置用于下次匹配。
四、创建
正则可以用2种但是来创建,一种是正则语法,另一种是使用带字符串的构造函数。
使用正则语法:在需要包含/的正则里面需要用转义,如果要让元字符直接显示,需要在前面加用转义字符。
使用构造函数:在包含引号、和元序列的前面需要加转义字符。该过程实际就是字符串解析成正则表达式语法,在匹配的时候再对正则表达式语法解析。
五、使用 1.RegExp.test(str:String):void 检测str是否有与正则匹配的子串 2.RegExp.exec(str:String):Object 在str中执行匹配搜索,没有匹配返回null.否则否则返回一个包含以下具有以下属性的对象: 一个数组:索引0是完全匹配的子串,接下来是与正则中的组匹配的子串。 index:匹配的子串在原字符串中的索引。 input:原串str. 3.String.search(pattern:*):int 返回与pattern匹配的第一个子串的索引。 4.String.match(pattern:*):Array 返回与pattern匹配的所有子串。仅当pattern是正则且设置了g时才可能返回多个匹配项,否则返回仅包含第一个匹配项。 5.String.replace(pattern*,repl:Object):String 相对于字符串匹配的pattern返回一个新串。 repl可以是一个函数,此时replace会按序传以下参数: 匹配的串 匹配组的串 匹配串的索引 完整原串