正则表达式[转]

 

正则表达式中的特殊字符

正则表达式中的特殊字符 

字符 含意 

\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 
-或- 
对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"

^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a" 
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A" 
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa 
+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa 
? 匹配前面元字符0次或1次,/ba*/将匹配b,ba 
(x) 匹配x保存x在名为$1...$9的变量中 
x|y 匹配x或y 
{n} 精确匹配n次 
{n,} 匹配n次以上 
{n,m} 匹配n-m次 
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) 
[^xyz] 不匹配这个集合中的任何一个字符 
[\b] 匹配一个退格符 
\b 匹配一个单词的边界 
\B 匹配一个单词的非边界 
\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M 
\d 匹配一个字数字符,/\d/ = /[0-9]/ 
\D 匹配一个非字数字符,/\D/ = /[^0-9]/ 
\n 匹配一个换行符 
\r 匹配一个回车符 
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等 
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/ 
\t 匹配一个制表符 
\v 匹配一个重直制表符 
\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9] 
\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。
正则表达式中的特殊字符

字母数字字符

字母数字字符 自身 
\ f 换页符 
\ n 换行符 
\ r 回车 
\ t 制表符 
\ v 垂直制表符 
\ / 一个 / 直接量 
\ \ 一个 \ 直接量 
\ . 一个 . 直接量 
\ * 一个 * 直接量 
\ + 一个 + 直接量 
\ ? 一个 ? 直接量 
\ | 一个 | 直接量 
\ ( 一个 ( 直接量 
\ ) 一个 ) 直接量 
\ [ 一个 [ 直接量 
\ ] 一个 ] 直接量 
\ { 一个 { 直接量 
\ } 一个 } 直接量 
\ XXX 由十进制数 XXX 指 定的ASCII码字符 
\ Xnn 由十六进制数 nn 指定的ASCII码字符 
\ cX 控制字符^X. 例如, \cI等价于 \t, \cJ等价于 \n 

___________________________________________________ 

如果想在正则表达式中使用特殊的标点符号,必须在它们之前加上一个 "\" . 
字母数字字符

正则表灰式的字符类

正则表灰式的字符类 

字符 匹配 
____________________________________________________ 

[...] 位于括号之内的任意字符 
[^...] 不在括号之中的任意字符 
. 除了换行符之外的任意字符,等价于[^\n] 
\w 任何单字字符, 等价于[a-zA-Z0-9] 
\W 任何非单字字符,等价于[^a-zA-Z0-9] 
\s 任何空白符,等价于[\ t \ n \ r \ f \ v] 
\S 任何非空白符,等价于[^\ t \ n \ r \ f \ v] 
\d 任何数字,等价于[0-9] 
\D 除了数字之外的任何字符,等价于[^0-9] 
[\b] 一个退格直接量(特例) 
字符类

正则表达式的复制字符

正则表达式的复制字符 

字符 含义 
__________________________________________________________________ 

{n, m} 匹配前一项至少n次,但是不能超过m次 
{n, } 匹配前一项n次,或者多次 
{n} 匹配前一项恰好n次 
? 匹配前一项0次或1次,也就是说前一项是可选的. 等价于 {0, 1} 
+ 匹配前一项1次或多次,等价于{1,} 
* 匹配前一项0次或多次.等价于{0,} 
___________________________________________________________________ 
复制字符

选择,分组和引用

选择,分组和引用 
字符 含义 
____________________________________________________________________ 

| 选择.匹配的要么是该符号左边的子表达式,要么它右边的子表达式 
(...) 分组.将几个项目分为一个单元.这个单元可由 *、+、?和|等符号使用,而且还可以记住和这个组匹配的字符以供此后引 

用使用 
\n 和第n个分组所匹配的字符相匹配.分组是括号中的子表达式(可能是嵌套的).分组号是从左到右计数的左括号数 
____________________________________________________________________ 
例如:下面的正则表达式匹配的就是位于单引号或双引号之内的所有字符.但是,它要求开始和结束的引号匹配(例如两个都是双引号或者都是单引号): 
/[' "] [^ ' "]*[' "]/ 

如果要求开始和结束的引号匹配,我们可以使用如下的引用: 
/( [' "] ) [^ ' "] * \1/ 
选择,分组和引用

指定匹配的位置

指定匹配的位置 _____________________________________________________________

^ 匹配的是字符的开头,在多行检索中,匹配的是一行的开头 
$ 匹配的是字符的结尾,在多行检索中,匹配的是一行的结尾 
\b 匹配的是一个词语的边界.简而言之就是位于字符\w 和 \w之间的位置(注意:[\b]匹配的是退格符) 
\B 匹配的是非词语的边界的字符 
_____________________________________________________________
指定匹配的位置

属性

属性 
_________________________________________ 

i 执行大小写不敏感的匹配 
g 执行一个全局的匹配,简而言之,就是找到所有的匹配,而不是在找到第一个之后就停止了 
_________________________________________ 
属性

符号:

/r, /n    代表回车和换行符
/t    制表符 
//    代表 "/" 本身


/^    匹配 ^ 符号本身
/$    匹配 $ 符号本身
/.    匹配小数点(.)本身
/d    任意一个数字,0~9 中的任意一个
/w    任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个 
/s    包括空格、制表符、换页符等空白字符的其中任意一个
.    小数点可以匹配除了换行符(/n)以外的任意一个字符

[ab5@]    匹配 "a""b""5""@"
[^abc]    匹配 "a","b","c" 之外的任意一个字符
[f-k]    匹配 "f"~"k" 之间的任意一个字母
[^A-F0-3]    匹配 "A"~"F","0"~"3" 之外的任意一个字符

{n}    表达式重复n次,比如:"/w{2}" 相当于 "/w/w""a{5}" 相当于 "aaaaa"
{m,n}    表达式至少重复m次,最多重复n次,比如:"ba{1,3}"可以匹配 "ba""baa""baaa"
{m,}    表达式至少重复m次,比如:"/w/d{2,}"可以匹配 "a12","_456","M12344"...
?    匹配表达式0次或者1次,相当于 {0,1},比如:"a[cd]?"可以匹配 "a","ac","ad" 
+    表达式至少出现1次,相当于 {1,},比如:"a+b"可以匹配 "ab","aab","aaab"...
*    表达式不出现或出现任意次,相当于 {0,},比如:"/^*b"可以匹配 "b","^^^b"...
 
^    与字符串开始的地方匹配,不匹配任何字符
$    与字符串结束的地方匹配,不匹配任何字符
/b    匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符
 
|    左右两边表达式之间 "" 关系,匹配左边或者右边

( )    (1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
    (2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

(d)(/w+)    "/w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd"

(d)(/w+)(d)    "/w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。虽然 "/w+" 也能够匹配上最后一个 "d",但是为了使整个表达式匹配成功,"/w+" 可以 "让出" 它本来能够匹配的最后一个 "d"

(d)(/w+?)    "/w+?" 将尽可能少的匹配第一个 "d" 之后的字符,结果是:"/w+?" 只匹配了一个 "x"
 
(d)(/w+?)(d)    为了让整个表达式匹配成功,"/w+?" 不得不匹配 "xxx" 才可以让后边的 "d" 匹配,从而使整个表达式匹配成功。因此,结果是:"/w+?" 匹配 "xxx"

/S    匹配所有非空白字符("/s" 可匹配各个空白字符)
/D    匹配所有的非数字字符
/W    匹配所有的字母、数字、下划线以外的字符
/B    匹配非单词边界,即左右两边都是 "/w" 范围或者左右两边都不是 "/w" 范围时的字符缝隙
 


^    匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "/^"
$    匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "/$"
( )    标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "/(""/)"
[ ]    用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "/[""/]"
{ }    修饰匹配次数的符号。要匹配大括号,请使用 "/{""/}"
.    匹配除了换行符(/n)以外的任意一个字符。要匹配小数点本身,请使用 "/."
?    修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "/?"
+    修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "/+"
*    修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "/*"
|    左右两边表达式之间 "" 关系。匹配 "|" 本身,请使用 "/|"
 
 
View Code

 

 

17种正则

"^\\d+$"  //非负整数(正整数 + 0) 
"^[0-9]*[1-9][0-9]*$"  //正整数 
"^((-\\d+)|(0+))$"  //非正整数(负整数 + 0) 
"^-[0-9]*[1-9][0-9]*$"  //负整数 
"^-?\\d+$"    //整数 
"^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0) 
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0) 
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数
"^(-?\\d+)(\\.\\d+)?$"  //浮点数 
"^[A-Za-z]+$"  //由26个英文字母组成的字符串 
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串 
"^[a-z]+$"  //由26个英文字母的小写组成的字符串 
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串 
"^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串 
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址 
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url 
View Code

例子

/^(100|[1-9]\d|\d)$/    0-100整数

var reg = /^(?!0)([0-9]{1,3})*(.[0-9]{1})?$/;  1-1000 只能带一位小数

var a = reg.exec($(this).val());
var b = reg.test($(this).val());

只能输入1个数字 

 
表达式  ^\d$  
描述  匹配一个数字  
匹配的例子  0,1,2,3  
不匹配的例子    

只能输入n个数字 

  
表达式  ^\d{n}$ 例如^\d{8}$  
描述  匹配8个数字  
匹配的例子  12345678,22223334,12344321  
不匹配的例子    


只能输入至少n个数字 

  
表达式  ^\d{n,}$ 例如^\d{8,}$  
描述  匹配最少n个数字  
匹配的例子  12345678,123456789,12344321  
不匹配的例子    


只能输入m到n个数字 

  
表达式  ^\d{m,n}$ 例如^\d{7,8}$  
描述  匹配m到n个数字  
匹配的例子  12345678,1234567  
不匹配的例子  123456,123456789  


只能输入数字 

  
表达式  ^[0-9]*$  
描述  匹配任意个数字  
匹配的例子  12345678,1234567  
不匹配的例子  E,  


只能输入某个区间数字 

  
表达式  ^[12-15]$  
描述  匹配某个区间的数字  
匹配的例子  12,13,14,15  
不匹配的例子    


只能输入0和非0打头的数字 

  
表达式  ^(0|[1-9][0-9]*)$  
描述  可以为0,第一个数字不能为0,数字中可以有0  
匹配的例子  12,10,101,100  
不匹配的例子  01,  


只能输入实数 

  
表达式  ^[-+]?\d+(\.\d+)?$  
描述  匹配实数  
匹配的例子  18,+3.14,-9.90  
不匹配的例子  .6,33s,67-99 


只能输入n位小数的正实数 

  
表达式  ^[0-9]+(.[0-9]{n})?$以^[0-9]+(.[0-9]{2})?$为例  
描述  匹配n位小数的正实数  
匹配的例子  2.22  
不匹配的例子  2.222,-2.22,  


只能输入m-n位小数的正实数 

  
表达式  ^[0-9]+(.[0-9]{m,n})?$以^[0-9]+(.[0-9]{1,2})?$为例  
描述  匹配m到n位小数的正实数  
匹配的例子  2.22,2.2  
不匹配的例子  2.222,-2.2222,  


只能输入非0的正整数 

  
表达式  ^\+?[1-9][0-9]*$  
描述  匹配非0的正整数  
匹配的例子  2,23,234  
不匹配的例子  0,-4,  


只能输入非0的负整数 

  
表达式  ^\-[1-9][0-9]*$  
描述  匹配非0的负整数  
匹配的例子  -2,-23,-234  
不匹配的例子  0,4,  


只能输入n个字符 

  
表达式  ^.{n}$ 以^.{4}$为例  
描述  匹配n个字符,注意汉字只算1个字符  
匹配的例子  1234,12we,123清,清清月儿  
不匹配的例子  0,123,123www,  


只能输入英文字符 

  
表达式  ^.[A-Za-z]+$为例  
描述  匹配英文字符,大小写任意  
匹配的例子  Asp,WWW,  
不匹配的例子  0,123,123www,  


只能输入大写英文字符 

  
表达式  ^.[A-Z]+$为例  
描述  匹配英文大写字符  
匹配的例子  NET,WWW,  
不匹配的例子  0,123,123www,  


只能输入小写英文字符 

  
表达式  ^.[a-z]+$为例  
描述  匹配英文大写字符  
匹配的例子  asp,csdn  
不匹配的例子  0,NET,WWW,  


只能输入英文字符+数字 

  
表达式  ^.[A-Za-z0-9]+$为例  
描述  匹配英文字符+数字  
匹配的例子  1Asp,W1W1W,  
不匹配的例子  0,123,123,www,  


只能输入英文字符/数字/下划线 

  
表达式  ^\w+$为例  
描述  匹配英文字符或数字或下划线  
匹配的例子  1Asp,WWW,12,1_w  
不匹配的例子  3#,2-4,w#$,  


密码举例 

  
表达式  ^.[a-zA-Z] \w{m,n}$  
描述  匹配英文字符开头的m-n位字符且只能数字字母或下划线  
匹配的例子    
不匹配的例子    


验证首字母大写 
  
表达式  \b[^\Wa-z0-9_][^\WA-Z0-9_]*\b  
描述  首字母只能大写  
匹配的例子  Asp,Net  
不匹配的例子    


验证网址(带?id=中文)VS.NET2005无此功能 
  
表达式  ^http:\/\/([\w-]+(\.[\w-]+)+(\/[\w- .\/\?%&=\u4e00-\u9fa5]*)?)?$ 
 
描述  验证带?id=中文  
匹配的例子  ,
http://blog.csdn.net/?id=清清月儿  
不匹配的例子    


验证汉字 
  
表达式  ^[\u4e00-\u9fa5]{0,}$  
描述  只能汉字  
匹配的例子  清清月儿  
不匹配的例子    


验证QQ号 
  
表达式  [0-9]{5,9}  
描述  5-9位的QQ号  
匹配的例子  10000,123456  
不匹配的例子  10000w,  


验证电子邮件(验证MSN号一样)  
表达式  \w+([-+.´]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*  
描述  注意MSN用非hotmail.com邮箱也可以  
匹配的例子  aaa@msn.com  
不匹配的例子  111@1.  


验证身份证号(粗验,最好服务器端调类库再细验证) 
  
表达式  ^[1-9]([0-9]{16}|[0-9]{13})[xX0-9]$  
描述    
匹配的例子  15或者18位的身份证号,支持带X的  
不匹配的例子    


验证手机号(包含159,不包含小灵通) 
  
表达式  ^13[0-9]{1}[0-9]{8}|^15[9]{1}[0-9]{8}  
描述  包含159的手机号130-139 
匹配的例子  139XXXXXXXX  
不匹配的例子  140XXXXXXXX,  


验证电话号码号(很复杂,VS.NET2005给的是错的) 
  
表达式(不完美 )  方案一 ((\(\d{3}\)|\d{3}-)|(\(\d{4}\)|\d{4}-))?(\d{8}|\d{7})
方案二 (^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$) 支持手机号但也不完美  
描述  上海:02112345678 3+8位
上海:021-12345678
上海:(021)-12345678
上海:(021)12345678
郑州:03711234567 4+7位
杭州:057112345678 4+8位
还有带上分机号,国家码的情况
由于情况非常复杂所以不建议前台做100%验证,到目前为止似乎也没有谁能写一个包含所有的类型 ,其实有很多情况本身就是矛盾的。
如果谁有更好 的验证电话的请留言 
 
匹配的例子    
不匹配的例子    


验证护照 
  
表达式  (P\d{7})|G\d{8}) 
 
描述  验证P+7个数字和G+8个数字  
匹配的例子    
不匹配的例子    


验证IP 
  
表达式  ^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$ 
 
描述  验证IP  
匹配的例子  192.168.0.1 222.234.1.4  
不匹配的例子    


验证域  
表达式  ^[a-zA-Z0-9]+([a-zA-Z0-9\-\.]+)?\.(com|org|net|cn|com.cn|edu.cn|grv.cn|)$ 
 
描述  验证域  
匹配的例子  csdn.net baidu.com it.com.cn  
不匹配的例子  192.168.0.1  


验证信用卡  
表达式  ^((?:4\d{3})|(?:5[1-5]\d{2})|(?:6011)|(?:3[68]\d{2})|(?:30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$ 
 
描述  验证VISA卡,万事达卡,Discover卡,美国运通卡  
匹配的例子    
不匹配的例子    


验证ISBN 国际标准书号  
表达式  ^(\d[- ]*){9}[\dxX]$ 
 
描述  验证ISBN国际标准书号  
匹配的例子  7-111-19947-2  
不匹配的例子    


验证GUID 全球唯一标识符  
表达式  ^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}$ 
 
描述  格式8-4-4-4-12  
匹配的例子  2064d355-c0b9-41d8-9ef7-9d8b26524751  
不匹配的例子    


验证文件路径和扩展名  
表达式  ^([a-zA-Z]\:|\\)\\([^\\]+\\)*[^\/:*?"<>|]+\.txt(l)?$ 
 
描述  检查路径和文件扩展名  
匹配的例子  E:\mo.txt  
不匹配的例子  E:\ , mo.doc, E:\mo.doc ,  


验证Html颜色值  
表达式  ^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$ 
 
描述  检查颜色取值  
匹配的例子  #FF0000  
不匹配的例子    
例子

 

posted @ 2016-06-03 14:24  bxzjzg  阅读(210)  评论(0编辑  收藏  举报