首頁  >  文章  >  web前端  >  正規中句號使用範疇有哪些

正規中句號使用範疇有哪些

php中世界最好的语言
php中世界最好的语言原創
2018-06-09 14:38:011415瀏覽

這次給大家帶來正規中句號使用範疇有哪些,正規中句號使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

我們知道,正規表示式中,可以用. 表示任意單個字符,但在underscore和jquery的源代碼中,我們可以看到,這些著名類庫的代碼中,經常並不是用.來表示任意字符,而是使用[\w\W] 或[\s\S] 。乍一看,好像表達的含義是一樣的,可是為什麼放著簡單的方法不用,而去多繞個圈子?今天就簡單說說這個問題。

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

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

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

再延伸一點,對於現代瀏覽器,可以直接用 [^] 來匹配任意字元的。

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

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

如何在專案中使用JS事件委託

#使用正規驗證密碼強度(兩個種方式附程式碼)

#

以上是正規中句號使用範疇有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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