首頁  >  文章  >  web前端  >  深入理解JS正規表示式之預定義類別與邊界的解析

深入理解JS正規表示式之預定義類別與邊界的解析

不言
不言原創
2018-07-11 09:37:451868瀏覽

這篇文章主要介紹了關於深入理解JS正規表示式之預定義類別與邊界的解析,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

預定義類別

正規表示式提供預先定義類別來符合常見的字元類別

##\D[^0-9]非數字字元\s[\t\n\x0B\f\r] 空白符\S[^\t\n\x0B\f\r]非空白符\w[a-zA-Z_0-9]單字字元(字母、數字、底線)\W[^a-zA-Z_0-9]#非單字字元
#字元 等價類別 意義
. [^\r\n] 除了回車符號和換行符號以外的所有字元
\d [0-9] #數字字元
使用預定義類別可以快速匹配目標,如:匹配一個ab 數字任意字符,使用字符類別、範圍類別需要書寫大量的代碼,而使用預定義類別只需要這樣寫:

/ab\d/

邊界

正規表示式也提供了幾個常用的邊界匹配字元

字元#^$ \b\B當我們只想在匹配一段話中的部分單字而不是單字中的字母時,邊界往往很有用
##意思
以xxx開始
#以xxx結束
單字邊界
非單字邊界

單字邊界與非單字邊界

有時,我想匹配一句話中的is單詞,而不想匹配在單字中的is字母,此時,使用單字邊界可以輕鬆解決這個問題:

let text = 'This is a boy'

let reg1 = /is/g

let reg2 = /\bis\b/g

text.replace(reg1, 'IS')    // 没有使用单词边界\b区分,结果为:ThIS IS a boy

text.replace(reg2, 'IS')    // 使用了单词边界进行区分,结果为:This IS a boy

而當我只想匹配作為單字結尾的is時,該怎麼辦?此時可以機智的混用單字邊界與非單字邊界:

let text = 'This is a boy'

let reg3 = /\Bis\b/g

text.replace(reg3, 'IS')    // ThIS is a boy

^ 和$ —— 開始與結尾

很多使用,我們會想匹配開頭或結尾的字符,使用

^

$可以完美的解決這個問題:<pre class="brush:js;toolbar:false;">let text = &amp;#39;@123@abc@&amp;#39; let reg1 = /@/g text2.replace(reg1, &amp;#39;Q&amp;#39;) // 没有使用^和$,匹配了所有的@,结果为:Q123QabcQ let reg2 = /^@/g text.replace(reg2, &amp;#39;Q&amp;#39;) // 使用^匹配开头的@,结果为:Q123@abc@ let reg3 = /@$/g text.replace(reg3, &amp;#39;Q&amp;#39;) // 使用$匹配结尾的@,结果为:@123@abcQ</pre>tips:實際使用中

^

需要寫在匹配項的前方,而$需要卸載符合項目的後方在多行的情況下使用^和$

在多行的情況下,使用

m

進入多行模式才能匹配到每行的開頭和結尾匹配字符:<pre class="brush:js;toolbar:false;">let text = &amp;#39;@123\n@456\n@789&amp;#39; let reg1 = /^@\d/g text.replace(reg1, &amp;#39;Q&amp;#39;) /* 由于换行实际上只是一个换行符字符,在正常模式下,依然看做一段字符 结果为: Q23 @456 @789 */ let reg2 = /^@\d/gm text.replace(reg2, &amp;#39;Q&amp;#39;) /* 添加了m进入多行模式: 结果为: Q23 Q56 Q89 */</pre>以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

 相關推薦:

深入理解JS正規表示式範圍類別的解析


深入理解JS正規表示式之元字元和字元類別的解析

以上是深入理解JS正規表示式之預定義類別與邊界的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn