JavaScript正则表达式详解

JavaScript中,正则表达式由RegExp对象表示。RegExp对象呢,又可以通过直接量和构造函数RegExp两种方式创建,分别如下:

//直接量 var re = /pattern/[g | i | m];

//构造函数 var re = new RegExp(["pattern", ["g" | "i" | "m"]]);

其中,末尾的可选字符(g、i和m)分别表示:

  g模式执行一个全局匹配。简而言之,就是找到所有匹配,而不是在找到第一个之后就停止。

  i模式执行不区分大小写的匹配。

  m: 多行模式,^和$锚除了匹配字符串的开头和结尾外,还匹配每行的开头和结尾。例如,模式/Java$/m匹配"Java"和"Java\nScript"。

基础篇  

--特殊字符--

正则表达式中,所有的字母字符和数字都可以按照直接量与自身匹配,如/JavaScript/匹配的就是字符串"JavaScript",但是有些特殊字符呢?如换行符。所以在JavaScript中规定以反斜杠(\)开头的转义序列支持这些特殊字符。常用的特殊字符如下:

转义字符

 

匹配

 

\n

 

换行符

 

\r

 

回车

 

\f

 

换页符

 

\t

 

制表符

 

\v

 

垂直制表符

 

 --字符类--

在正则表达式中,倘若将单独的字符放入方括号([ ])中,就可以组合成字符类。应用到匹配字符串中,我们可以将其看成一个漏斗,当字符串中的每个字符通过它时,都查找是否在这个类里面,如若在,就匹配成功,否则out。如下:

/* match为字符串的方法,它的唯一参数就是一个正则表达式, 如果该正则表达式设置了标志g,该方法返回的数组包含的就是出现在字符串中的所有匹配。 详细的用法将在下面“正则表达式在String中的应用”细讲 */ "abc".match(/[abc]/g);

匹配结果为:

JavaScript正则表达式详解

如果我们的意愿是,想匹配除字符a、b、c之外的字符呢?我们可以定义一个否定类,只需将^符号放入[ ]中作为开头就OK啦。如下:

"abc".match(/[^abc]/g);

由于某些字符类经常用到,固JavaScript的正则表达式就用反斜杠(\)与一些特殊字符组合起来表示这些常用类,而不必再需要我们自行添加,如\d。

常用正则字符类如下:

字符类

 

匹配

 

例子

 

[ …]

 

位于方括号之中的任意字符

 

/M[onke]y/ 匹配 "Moy"

 

[ ^…]

 

除包含在方括号之中的任意字符

 

/M[^onke]y/ 匹配 "May"

 

.

 

除换行符之外的任意字符

 

/../ 匹配 "Mo"

 

\w

 

字母、数字或下划线

 

/1\w/ 匹配 "1A"

 

\W

 

除字母、数字和下划线之外的字符

 

/1\W/ 匹配 "1%"

 

\s

 

单个空白字符

 

/M\sK/ 匹配 "M K"

 

\S

 

单个非空白字符

 

/M\SK/ 匹配 "M_K"

 

\d

 

0到9的数字

 

/\d/ 匹配 "1"

 

\D

 

非数字

 

/\D/ 匹配 "M"

 

--重复匹配--

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5d19918dd526ad4205c6b4629fdfc463.html