溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

正則表達式中句號有什么用

發(fā)布時間:2021-09-09 09:52:22 來源:億速云 閱讀:113 作者:小新 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹了正則表達式中句號有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

首先我們必須要正確理解 . 的含義。其實說它表示任意單個字符,可能會讓人產(chǎn)生誤解,必須要強調(diào)一下,這個“任意單個字符”不包括控制換行的字符,也就是不包含 \n \r \u2028 或\u2029 這幾個字符。而 \W 和 \s 中是能夠包含這些字符的。那個這兩種寫法的差異也就很清晰了,就是能否匹配到幾個換行控制符的差異。

那么在什么時候我們需要考慮這幾個換行控制符呢?當要處理的字符串可能包含換行時。這樣的情景太多了,處理html字符串、處理template、nodejs讀取文本等等。

提及多行文本的場景,我們很容易想到正則表達式的 m 模式(多行模式)。那么多行模式對我們今天討論的問題有影響嗎?我不是很確定。為什么不確定呢?有些人信誓旦旦地聲稱單行模式下 . 的含義與多行模式下不同,單選模式下等同于 [\w\W] 或者 [\s\S] ,而多行模式下會排除換行控制符。但據(jù)我試驗,以及參考MDN的說法,這是不對的。的確有很多語言的正則表達式會有上述特性,但在javascript中我沒有看到,不知道會不會有瀏覽器方面的差異。那么多行模式對于javascript而言影響的是什么呢?我認為僅僅是改變了 ^ 和 $ 標識的含義:單行模式下,分別表示整個字符串的開始的結(jié)尾;多行模式下表示每一行的開始和結(jié)尾。而不管多行模式還是單行模式,我認為 . 都是不包含換行控制字符的,等價于 [^\n\r\u2028\u2029] 。

再多延伸一點點,對于現(xiàn)代瀏覽器,可以直接用 [^] 來匹配任意字符的。

例子程序不想寫了,有興趣的可以自己試驗一下,分別用 /.*/g 、 /^.*$/g 、 /.*/gm 、/^.*$/gm 來匹配一下 "abc\nedf" ,其中道理不言自明。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“正則表達式中句號有什么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI