首页 > 技术文章 > 正则表达式

a591378955 2017-12-24 22:51 原文

  正则表达式是一个描述字符模式的对象。

一、正则表达式的语法

  一个正则表达式就是由普通字符(如字符a~z)以及特殊字符(称为元字符)组成的模式字符串,用于描述在查找文字主体时待匹配的一个或多个字符串。

  1、字符类

  指用于匹配的字符的组合。

                            正则表达式的字符类

字符类

说明

示例

[···]

匹配方括号中字符序列中的任意一个字符。其中,可以使用连字符“-”匹配指定范围内的任意字符

/[012]/可以与0A1B2C中的字符0、1或2匹配

/[0-5]/可以与a0e1w2g3h4k5中的0~5之间的任意数字字符匹配

[^···]

匹配方括号内字符序列中未包含的任意字符。其中,可以使用连字符“-”匹配不再指定范围内的任意字符

/[012]/可以与0A1B2C中除0、1或2三个字符之外的任意字符匹配,这里可以与字符A、B或C匹配

/[^a-z]/可以与aB123hwZ中不在a~z之间的任意字符匹配

.

除了换行和回车之外的任意字符,相当于[^\n\r]

 

\d

匹配任意一个数字字符,相当于[0-9]

/\d/可以与w7gh中的字符7匹配

\D

匹配非数字字符,相当于[^0-9]

/\D/可以与w7gh中的字符w、g或h匹配

\s

匹配任意空白字符,如空格、制表符、换行符等等,相当于[\t\n\x0B\f\r]

/\s\d/可以与my book 71th中的7匹配

\S

匹配任何非空白字符,相当于[^\t\n\x0B\f\r]

/\S/可以与AB中的A或B匹配

\w

匹配任何英文字母、数字以及下划线,相当于[a-zA-Z0-9]

/\w/可以与w4F_71-+中的字母、数字和下划线匹配

  注意:使用[^···]时,如果字符"^"不是出现在第一个"["的后面,则仍表示字符"^"字符的原义。

  2、量词

  在正则表达式中,使用量词可以控制字符或字符串出现的次数。

                             正则表达式的量词

量词

说明

示例

匹配前一项0次或1次

/JS?/可以匹配JScript中的JS或者JavaScript中的J
+

匹配前一项一次或多次,但至少出现一次

/JS+/可以匹配包含JS或者JSSSS的字符串,即可以与在字母J后面连续出现一个或多个字母S的字符串相匹配
*

匹配前一项0次或多次(任意次)

/bo*/可以匹配包含b、bo或者booo的字符串
{n}

匹配前一项恰好n次,其中n为非负整数

/0{2}/可以与book中的两个o相匹配,可以与booook中的任意两个连续的o相匹配
{n,}

匹配前一项至少n次

/0{2,}/不可以与home中的o匹配,但可以与good或者goooood中的所有o相匹配
{n,m}

匹配前一项至少n次,但不能超过m次,其中n和m是非负整数,并且n<=m

/o{2,5}/可以与book中的两个o、与booooooook中5个连续的o匹配

  3、指定匹配的位置

                              指定匹配位置的方式

字符

说明

示例
^

匹配字符串的行开头。字符”^"必须出现在指定字符串的最前面才起作用

/^g/与good中的字符g匹配,但与bag中的字符g不匹配
$

匹配字符串的行结尾。字符"$"必须出现在指定字符串的最后面才起作用

/g$/与bag中的字符g匹配,但与good中的字符g不匹配
\b

匹配单词的边界

/e\b/与I love seek中的love中的e相匹配,但与seek中的e不匹配
\B

匹配非单词的边界

/e\B/与I love seek中的seek中的e相匹配,但与love中的e不匹配

  4、选择匹配符

  正则表达式的选择匹配符只有一个,即“|”院子符。使用选择匹配符可以匹配所指定的两个选项中任意一项。例如:/World|Dream/可以与“One World,One Dream"中的World或者Dream匹配

  5、分组

  

推荐阅读