最近跟廖老師學習了一下正則表達式胧砰,整理筆記如下:
基礎(chǔ)
\d
匹配一個數(shù)字唉匾,\w
匹配一個字母或者數(shù)字,\s
匹配一個空格或者一個制表符如
-
00\d
可以匹配007
-
\d\d\d
可以匹配100
-
\w\w
可以匹配js
.
可以匹配任意字符,如
-
js.
可以匹配jsp
,js!
以上都是匹配一些固定長度的字符铅协,要想匹配一些變長的字符
-
*
匹配任意數(shù)量的字符 -
+
匹配至少一個字符 -
?
匹配一個或者0個字符 -
{n}
匹配n個字符 -
{n,m}
匹配n-m個字符
比如一個簡單應(yīng)用捷沸,匹配一個電話號碼,正則可以寫作 \d{4}\s\d{7}
狐史,那么就可以匹配 0391 6528455
這個號碼痒给,如果我們想匹配0391-6528455
這個號碼说墨,正則可以修改為 \d{4}\-\d{7}
下面來進行一些測試吧!
var regexObj = /\d{4}\-\d{7}/;
regexObj.test("0391-6528455"); //true
regexObj.test("!0391-6528455!"); //true
可以看到不以字母為開頭或者結(jié)尾的字符串也可以通過測試苍柏,如何避免就需要用到如下兩個匹配符了尼斧。
-
^
: 匹配行的開頭,如以數(shù)字開頭^\d
-
$
: 匹配行的結(jié)束试吁,如以字母或者數(shù)字結(jié)尾\w$
進階
上面只是泛泛的進行數(shù)字和字母進行匹配棺棵,要想做到精確匹配,可以使用 []
來確定匹配范圍熄捍,如
[0-9a-zA-Z\_] 可以匹配一個數(shù)字烛恤,字母,或下劃線
[0-9a-zA-Z\_]+ 可以匹配至少一個一個數(shù)字余耽,字母或下劃線
[a-zA-Z\_\$][0-9a-zA-Z\_\$]* 可以匹配字母/下劃線/$符號開頭缚柏,后接任意個數(shù)字/字母/下劃線/$符號,也就是JavaScript可以接受的變量名
另外碟贾,^
不僅可以用來匹配開頭币喧,還可以當做反向字符來使用,如
[^g]oo 可以匹配不為g打頭的連續(xù)兩個oo字符串