正则表达式(RegExp )
创建
-
RegExp构造函数
var re = new RegExp("a");
-
使用字面量(常用)
var re = /a/;
方法
-
test()
参数:需要匹配模式的字符串
返回值:匹配成功返回true,否则返回false
-
exec()
参数:需要匹配模式的字符串
返回值:匹配成功返回一个以每个匹配成功的字符串组成的类数组集合,否则返回null
方法属性:
index
表示匹配项在字符串中的位置、input
表示原字符串
匹配规则
字面量字符
在正则表达式中,某个字符只表示它字面的含义,比如/a/匹配a
元字符
除字面量字符以外,还有一部分字符有特殊含义,不代表字面意思,叫“元字符”。如果要匹配他们本身,需要在它们前面加上反斜杠进行转义,比如匹配加号,就要写成+
正则中需要用斜杠转义的字符
^
、.
、[
、]
、$
、(
、)
、|
、*
、+
、?
、{
、}
、\\
如果使用RegExp方法生成正则对象,转义需要使用两个斜杠,因为字符串内部会先转义一次
-
点字符
.
: 匹配除回车\r
、换行\n
、行分隔符\u2028
、段分隔符\u2029
以外的所有字符 -
位置字符
^
:表示字符串的开始位置$
:表示字符串的结束位置 -
竖线字符
|
:在正则中表示“或关系”即a|b
表示匹配a
或b
重复类
模式的精确匹配次数
-
{n}
:恰好重复n次 -
{n,}
:至少重复n次 -
{n,m}
:重复不少于n次,不多于n次
量词符
?
:表示某个模式出现0
或1
次,等同{0,1}
最多1次*
:表示某个模式出现0
或多
次,等同{0,}
无影响+
:表示某个模式出现1
或多
次,等同{1,}
至少1次
字符类
表示有一系列字符可供选择,只要匹配其中一个就可以,所有可供选择的字符都放在方括号内,eg:[abc]
表示a
、b
、c
之中任选一个匹配
-
^
脱字符:如果方括号内第一个字符是[^]
,则表示除了字符类中的字符,其他字符都可以匹配,eg:[^abc]
表示除了a
、b
、c
之外的都可以匹配 -
-
连字符:对于连续序列的字符,连字符用来提供简写形式,表示字符的连续范围,eg:[abc]
可以写成[a-c]
、[0123456789]
可以写成[0-9]
、[A-Z]
表示26个大写字母 -
中文
[\u4e00-\u9fa5]
修饰符(模式修正符)
修饰符表示模式的附加规则,放在正则模式的最尾部,修饰符可以单个使用,也可以多个一起使用
g
默认情况下,第一次匹配成功后,正则对象就停止向下匹配,g修饰符表示全局匹配i
默认情况下,正则对象区分字母的大小写,加上i修饰符以后表示忽略大小写m
表示多行模式,会修改和$的行为,默认情况下,^和$匹配字符串的开始处和结尾处,加上m修饰符后,和$会识别换行符\n
预定义模式
指某些常见模式的简写方式
\d
:匹配0-9之间的任一数字,相当于[0-9]
\D
:匹配所有0-9以外的字符,相当于[^0-9]
\w
:匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]
\W
:除所有字母,数字和下划线以外的字符,相当于[^A-Za-z0-9_]
\s
:匹配空格,包括制表符、空格符、断行符等\S
:匹配非空格的字符\b
:匹配单词的后边界\B
:匹配非单词边界
特殊字符
[\b]
:匹配退格键\n
:匹配换行键\r
:匹配回车键\f
:匹配换页符\t
:查找制表符
组匹配
正则表达式的括号表示分组匹配,括号中的模式可以用来匹配分组内容
var str = 'abcdef';
var reg = /[(abc)(def)]/;
str.match(reg); // ['a','b','c']
匹配方法
字符串.方法(正则)
-
match()
:接受一个参数,正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null -
search()
:参数与match相同,返回字符串中第一个匹配项的索引,没有匹配项返回-1 -
replace()
:用于替换,接受两个参数,第一个是匹配项,第二个是字符串或是一个函数