字面量和實列兩種建立方法
var reg =
/123123123aaa.*/g
// 或
var val =
'匹配'
var reg =
newregexp
('123123123aaa.*'
,'g'
);
修飾符貪婪與惰性模式var val =
'12345678asd'
;console.
log(
/.*/
.exec
(a)[0]
)// "123456789"
console.
log(
/.*?/
.exec
(a)[0]
)// ""
console.
log(
/.+/
.exec
(a)[0]
)// "123456789"
console.
log(
/.+?/
.exec
(a)[0]
)// "1"
console.
log(
/\d/
.exec
(a)[0]
)// "123456789"
console.
log(
/\d?/
.exec
(a)[0]
)// "1"
如果要匹配具有特殊意義的特殊符號或者使用某些元字元,需要使用\
來轉義區分
字元類
比如要查詢數字,我們可以用\d
,也可以用字元類[0-9]
一樣生效在字元類中,-
代表著取值選擇乙個取值範圍範圍,如果想要匹配字串-
,要加轉義符[\-]
[0-15]
匹配的是0-1
和5
,並不是0、1、2、3、4...15
[aaaassddasdasddsda]
和[asd]
匹配的都是a
或s
或d
字元類中,^
代表著非,是指匹配非[^內容]
中的內容
var reg =
/a[dp]c/
// 匹配adc或apc
var reg =
/[a-za-z0-
9_]/
// 匹配數字字母下劃線
var reg =/[
^a-za-z0-
9_]/
// 匹配非數字字母下劃線
()
可以進行對內容的範圍選擇,捕獲等
(123|132|321|312)
表示不論是123、132、321、312都可以匹配
(123)?
這時的?
是對123
這一組資料應用的,代表著出現一次123
或者不出現123
1.在exec
中使用可以獲得()
中的內容
舉個栗子:
var a =
"123456789"
var val =
/34567/
.exec
(a)console.
log(val[0]
)// "34567"
console.
log(val[1]
)// undefined
var val2 =
/34(56)7/
.exec
(a)console.
log(v2[0]
)// "34567"
console.
log(v2[1]
)// "56"
2. 當正規表示式執行了test()
方法或者exec()
,且 該正規表示式中包含分組,則分組中與字串匹配的內容,會被儲存下來。
提取正規表示式中的內容最多提取9個()
中的內容
舉個栗子:
var a =
"123456789"/(
2)(3
)((4
)(5)
)6789/.
test
(a)console.
log(regexp.$1
)// "2"
console.
log(regexp.$2
)// "3"
console.
log(regexp.$3
)// "45"
console.
log(regexp.$4
)// "4"
console.
log(regexp.$5
)// "5"
console.
log(regexp.$6
)// "" // 因為沒有第六個括號,所以是空
3. 在replace
中使用()
可以通過$n
來取得括號中的內容
舉…:
var a =
"123456789"
a.replace
(/2345(67)8/
,'這是替換的文字$1這是替換的文字'
)// "1這是替換的文字67這是替換的文字"
replace補充,其他字串匹配方式:
斷言可以幫助我們查詢某些內容時,對內容前和內容後的資訊作為判斷(但並不包括這些內容)(把內容前或後的資訊作為判斷依據但結果不包括這些內容,所以也被稱為零寬斷言)
比如我們要在字串我是小明我是小王我是小綠我是小豬我啥也不是
把小明前的我是
改為我不是
,就可以使用零寬正先行斷言(?=x)
(x代表需要被匹配但不被包括的內容)
var str =
"我是小明我是小王我是小綠我是小豬我啥也不是"
var reg =
/我是(?=小明)/
console.
log(str.
replace
(reg,
'我不是'))
// "我不是小明我是小王我是小綠我是小豬我啥也不是"
可以看到,(?=小明)
中的小明沒有被替換掉,但是起到了匹配的作用,這就是斷言的用處
斷言的寫法
需要注意
js正則高階用法 分組和斷言
原文連線 對於要重複單個字元,非常簡單,直接在字元後加上限定符即可,例如 a 表示匹配1個或乙個以上的a,a?表示匹配0個或1個a,這些限定符如下所示 x x 一次或一次也沒有 x x 零次或多次 x x 一次或多次 x x 恰好 n 次 x x 至少 n 次 x x 至少 n 次,但是不超過 m ...
js正規表示式零寬斷言
我們開發 需要對一些前台傳過來的字串進行檢驗,比如檢驗使用者輸入的使用者名稱是否合法,號是否合法,使用者 的郵箱是否合法等。我們可以自己寫個函式進行檢驗。但是過於繁瑣,這時候我們可以用正規表示式進行檢驗。能夠準確 的檢驗出使用者輸入的郵箱是否合法,如果不合法反饋給使用者。1 字面量方式 var re...
正則指引 斷言
正規表示式中的大多數結構匹配的文字會 出現在匹配的結果中,但是有時候不但關心目標文字的匹配,還要判斷目標文字左右兩側的文字是否符合要求,這種要求的正則裡叫做斷言。常見的斷言有三類 單詞邊界 行的起始 結束的位置 環視。單詞邊界 正則記著 b,它匹配 單詞邊界 的位置。使用情況 bword b bwo...