`

[转]正则表达式语法

阅读更多
正则表达式语法
\b       代表单词的开头或结尾,也就是单词的分界处     比如\bhi\b
.        匹配除了换行符以外的任意字符
*        表示任意数量(可能是0次)
\d       匹配任意数字
-        只作为连字号
{n}       表示前面的字符必须连续重复匹配n次
\s       匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。
\w       匹配字母或数字或下划线或汉字
+        匹配重复1次或更多次
^        匹配字符串的开始
$        匹配字符串的结束           比如:^\d{5,12}$ 表示为必须为5位到12位数字
{n,m}      重复的次数不能少于n次,不能多于m次
?        重复零次或一次
{n,}      重复n次或更多次            比如: \(?0\d{2}[) -]?\d{8}。匹配(010)88886666,或022-22334455,或02912345678
\W       匹配任意不是字母,数字,下划线,汉字的字符
\S       匹配任意不是空白符的字符
\D       匹配任意非数字的字符
\B       匹配不是单词开头或结束的位置
[^x]      匹配除了x以外的任意字符
[^aeiou]    匹配除了aeiou这几个字母以外的任意字符
|        把不同的规则分隔开
[]       自定义字符
(exp)      匹配exp,并捕获文本到自动命名的组里
(?<name>exp)  匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp)     匹配exp,不捕获匹配的文本,也不给此分组分配组号
(?=exp)     匹配exp前面的位置
(?<=exp)     匹配exp后面的位置
(?!exp)      匹配后面跟的不是exp的位置
(?<!exp)    匹配前面不是exp的位置
(?#comment)   这种类型的组不对正则表达式的处理产生任何影响,用于提供注释让人阅读   比如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)。
*?        重复任意次,但尽可能少重复
+?        重复1次或更多次,但尽可能少重复
??        重复0次或1次,但尽可能少重复
{n,m}?      重复n到m次,但尽可能少重复
{n,}?      重复n次以上,但尽可能少重复
(?'group')    把捕获的内容命名为group,并压入堆栈
(?'-group')   从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败
(?(group)yes|no) 如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分
(?!)       零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败
\        这是引用府,用来将这里列出的这些元字符当作普通的字符来进行匹配。
\<    \>      匹配词(word)的开始(\<)和结束(\>)。
\(    \)      将 \( 和 \) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。 

IgnoreCase(忽略大小写)      匹配时不区分大小写。
Multiline(多行模式)       更改^和$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.) 
Singleline(单行模式)       更改.的含义,使它与每一个字符匹配(包括换行符\n)。 
IgnorePatternWhitespace(忽略空白) 忽略表达式中的非转义空白并启用由#标记的注释。
RightToLeft(从右向左查找)     匹配从右向左而不是从左向右进行。
ExplicitCapture(显式捕获)     仅捕获已被显式命名的组。
ECMAScript(JavaScript兼容模式)  使表达式的行为与它在JavaScript里的行为一致。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics