元字符
. ? 匹配除換行符以外的任意字符
\w 匹配字母數(shù)字下劃線或者中文
\d 匹配數(shù)字
\s 匹配空白
\b 匹配開始或者結(jié)束
^ 匹配字符串的開始
$ 匹配字符串的結(jié)束
常用的限定符
* 重復(fù)零次或更多次
+ 重復(fù)一次或更多次
? 重復(fù)零次或一次
{n} 重復(fù)n次
{n,} 重復(fù)n次或更多次
{n,m} 重復(fù)n到m次
常用的反義代碼
\W匹配任意不是字母,數(shù)字,下劃線,漢字的字符
\S匹配任意不是空白符的字符
\D匹配任意非數(shù)字的字符
\B匹配不是單詞開頭或結(jié)束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou這幾個字母以外的任意字符
常用分組語法
捕獲
(exp)匹配exp,并捕獲文本到自動命名的組里
(?exp)匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?'name'exp)
(?:exp)匹配exp,不捕獲匹配的文本,也不給此分組分配組號
零寬斷言
(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!exp)匹配后面跟的不是exp的位置
(?<!exp)匹配前面不是exp的位置
注釋
(?#comment)這種類型的分組不對正則表達式的處理產(chǎn)生任何影響,用于提供注釋讓人閱讀
懶惰限定符
*?重復(fù)任意次,但盡可能少重復(fù)
+?重復(fù)1次或更多次,但盡可能少重復(fù)
??重復(fù)0次或1次,但盡可能少重復(fù)
{n,m}?重復(fù)n到m次,但盡可能少重復(fù)
{n,}?重復(fù)n次以上,但盡可能少重復(fù)
常用正則表達式總結(jié)
中文字符? [\u4e00-\u9fa5]
QQ號 ^[1-9]\d{4,9}$
手機號 ^1[345789]\d{9}$
email ?^.+@.+$
? ? ? ? ? \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
身份證號?
1、15位? (1)1~6位為地區(qū)代碼
? ? ? ? ? ? ? ?(2)7~8位為出生年份(2位),9~10位為出生月份,11~12位為出生日期
? ? ? ? ? ? ? ?(3)第13~15位為順序號
^[1-9]\d{7}(0\d|1[0-2])([012]\d|3[01])\d{3}$
2、18位
1-2位省、自治區(qū)、直轄市代碼;3-4位地級市、盟、自治州代碼;5-6位縣、縣級市、區(qū)代碼;7-14位出生年月日,比如19670401代表1967年4月1日;15-17位為順序號,其中17位(倒數(shù)第二位)男為單數(shù),女為雙數(shù)?18位為校驗碼,0-9和X。
^[1-9]\d{5}[1-2]\d{3}(0\d|1[0-2])([012]\d|3[01])\d{3}(\d|[Xx])$
URL網(wǎng)址 [a-zA-z]+://[^\s]*
IP地址 (2[0-4]\d|25[0-5]|\[01]?\d?\d?\.){3}(2[0-4]\d|25[0-5]|\[01]?\d?\d?)
匹配特定數(shù)字:
^[1-9]\d*$ //匹配正整數(shù)
^-[1-9]\d*$ //匹配負(fù)整數(shù)
^-?[1-9]\d*$ //匹配整數(shù)
^[1-9]\d*|0$ //匹配非負(fù)整數(shù)(正整數(shù) + 0)
^-[1-9]\d*|0$ //匹配非正整數(shù)(負(fù)整數(shù) + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮點數(shù)
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配負(fù)浮點數(shù)
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮點數(shù)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非負(fù)浮點數(shù)(正浮點數(shù) + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點數(shù)(負(fù)浮點數(shù) + 0)
匹配特定字符串:
^[A-Za-z]+$ //匹配由26個英文字母組成的字符串
^[A-Z]+$ //匹配由26個英文字母的大寫組成的字符串
^[a-z]+$ //匹配由26個英文字母的小寫組成的字符串
^[A-Za-z0-9]+$ //匹配由數(shù)字和26個英文字母組成的字符串
^\w+$ //匹配由數(shù)字、26個英文字母或者下劃線組成的字符串