正则表达式入门教程
以下内容经正则表达式学习网授权
≈正则表达式是什么?≈
在使用电脑进行各种文字处理的时候,我们有时需要查和匹配一些特殊的字符串,如邮箱地址、验证用户输入的密码是否包含了大小写字母数字,查HTML源文档中的所有web地址等等,这时我们就可以使用到正则表达式
正则表达式本身是一个字符串,通过这个字符串去描述字符组成规则。如abbb、abbbb、abbbbb这三个字符串包都是a字母开头a后面有一个b字母,而且b字母重复了35。用正则表达式来描述就是ab{3,5}b{3,5}表示b字符重复3到5次。如果我们想匹配ababab这样的字符串,ab重复了3,用正则表达式表示就是(ab){3},圆括号()是正则表达式中的分组。大家如果想亲自感受正则表达式的使用效果,可以打开正则表达式测试系统
如以上实例所展示的,正则表达式为人们提供了一种简单易用的字符处理工具。它在目前主流的文字处理软件中都提供了良好的支持(不仅是编程软件,还有文字处理软件Uedit32、E
ditPlus,网页采集软件火车头等等),它具有很强的通用性,学好它,我们可以达一变应万变的效果。
≈正则表达式详解≈
{}()这种在正则表达式中,具有特殊含义的字符称为元字符(metacharacter)。元字符是组成正则表达式的基本元素,在正则表达式经常使用的元字符不是很多,概念容易理解。大家只要花30来分钟学完我们的教程基本上就可以完全掌握。
为了您能更快速的掌握正则表达式,我们为您推荐一款方便的正则表达式在线测试工具“RegExr”,(RegExr由gskinner免费提供)。
保留字符  匹配字符本身  匹配字符数量  匹配字符位置  分组匹配  表达式选项
保留字符  (返回目录)
在正则表达式中,有一些字符在正则表达式中具有特殊含义被称保留字符,如*表示前一个元素可以重复零次或多次,要匹配“*”字符本身使用\*,半角句号 . 匹配除了换行符外的所有
字符,要匹配“.”使用 \.
\*\.中斜杠\称为转义符,正则表达式中要匹配保留字符本身时都要加上转义符。同理要匹配反斜杠自身“\”要使用\\,第一个斜杠是转义符,第二个是斜杠本身。匹配字符串“\\”就为\\\\,第一个和第三个斜杠是转义符。
保留字
说明
保留字
说明
\
将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”“\n”匹配一个换行符。序列“\\”匹配“\”“\(”则匹配“(”
.
匹配除了换行符(\n)以外的任意一个字符。要匹配小数点本身,请使用 "\."
$
匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "\$"
^
匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "\^"
*
修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "\*"
+
修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "\+"
()
标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "\(" "\)"
?
修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "\?",当问号放在表达数量的元字符后面时,匹配模式是非贪婪的。如a\d+会匹配 a123231 中的所有字符(贪婪式下,表达式会尽可能多的匹配),但改成a\d?就只会匹配a1了(非贪婪模式下,表达式会尽可能少的匹配)。
{}
修饰匹配次数的符号。要匹配大括号,请使用 "\{" "\}"
[]
用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "\[" "\]"
|
左右两边表达式之间 "" 关系。匹配 "|" 本身,请使用 "\|"
匹配字符本身  (返回目录)
元字符本身就可以代表了某个具体的字符,如:\s可以匹配空格,\w可以匹配数字、字母和下划线,\d可以匹配数字,\s\w\d如果改成大写的话就可以进行反向匹配,\S匹配所有的非空格字符,\W匹配所有非单词字符的字符,\D匹配除了0-9外的所有字符。[]可以匹配取值范围,如[abc]匹配文本中的a或b或c。
正则表达式中不能直接匹配中文字符,必需字符编码形式来进行匹配,如“中华”这两个字符的十六进制unicode编码(编码查看工具)是0x4e2d和0x534e,正则表达式的书写形式为\u4e2d和\u534e(亲手试试)。
换行符在不同的系统和环境中有所有不,JavaScript测试环境中的换行符是\n,而flash测试环境中的换行符是\r,如果我们两行字,第一行的内容一个a字母,第二行的内容是个b字母,表达式的正确写法是javascript中为a\nb,而flash中写为a\rb。如果大家想更多的了解\r\n可以看(\n和\r详细说明)。
元字符
描述
表达式
匹配举例
.
这是一个英文句号,匹配除换行符外(\n)的任意单个字符。
a.e
“nave”中的“ave”
“water”中的“ate”
\w
匹配单词字符(字母、数字、下划线)。
\w
“ID A1.3”中的“I”“D”“A”“1”“3”
\W
匹配非单词字符(除了字母、数字、下划线的所有字符)。
\W
unicode在线工具
“ID A1.3”中的“ ”“.”
\s
匹配单个空白字符。
\w\s
“ID A1.3”中的“D”
\S
匹配非空白字符。
\s\S
“int __ctr”中的“ _”
\d
匹配0-9这十个数字中的任意一个。
\d
“4 = IV”中的“4”
\D
匹配所有非数字字符。
\D
“4 = IV”中的“ ”“=”“ ”“I”“V”
[ae]
匹配字符组中的任意一个字符。
[ae]
“gray”中的“a”
“lane”中的“a”“e”
[^aei]
加上^表示反向匹配,意思是除了组内字符外的所有字符都会匹配。
[^aei]
“reign”中的“r”“g”“n”
[a-d]
方括号内加上“-”这个符号表示一个区间,如[a-d]匹配a,b,c,d4个字符,也可以用[abcd]来表示。
[b-d]
“abcdef”中的“bcd”
\0
匹配null空字符(Unicode编码:0x0000)。
\n
匹配换行符(Unicode编码:0x000A),换行符 \n 与回车符\r 意思不同(\n和\r详细说明)。
\r\n(\w+)
“\r\nThese are\ntwo lines.”中的“\r\nThese”
\f
匹配换页符(Unicode编码:0x000C)。
[\f]{2,}
“\f\f\f”中的“\f\f\f”
\r
匹配回车符(Unicode编码:0x000D),回车符\r 与换行符 \n 意思不同(\n和\r详细说明)。
\r\n(\w+)
“\r\nThese are\ntwo lines.”中的“\r\nThese”
\t
匹配制表符(Unicode编码:0x0009)。
(\w+)\t
“item1\titem2\t”中的“item1\t”“item2\t”
\v
匹配垂直制表符(Unicode编码:0x000B)。
[\v]{2,}
“\v\v\v”中的“\v\v\v”
\xxx
匹配以八进制数 xxx 规定的字符。(字符编码历史和原理详解)
\w\040\w
“a bc d”中的“a b”“c d”
\xdd
匹配以十六进制数dd规定的字符(dd恰好由2位数字组成)(字符编码历史和原理详解)
\w\x20\w
“a bc d”中的“a b”“c d”
\uxxxx
匹配以十六进制数 xxxx 规定的 Unicode字符(Unicdoe由两个字节组成)(字符编码历史和原理详解)
\w\u0020\w
“a bc d”中的“a b”“c d”
匹配字符数量  (返回目录)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。