javascriptRegex定義(文法)總結,javascriptRegex
本文講述了javascriptRegex定義(文法)。分享給大家供大家參考,具體如下:
Regex的2種定義方法:一種是直接調用RegExp(),第二種是直接用字面量來定義,即var re = /正則規則/;
2種定義方法本質都是調用RegExp()方法
在調用同一段正則代碼的時候,ECMAScript3和ECMAScript5中表現完全不一樣
function reg(){ var re = /\sjavascript/; return re;}
分別在ECMAScript3和ECMAScript5中調用reg()方法多次
在ECMAScript3中,調用的是同一個RegExp對象,在ECMAScript5中,調用的是不同的RegExp對象 因為在EXCMAScript5中每執行一次,就產生一個新的RegExp對象
所以在ECMAScript3中會造成程式的隱患,因為只要在一個地方對這個對象進行修改的話,所有調用到這個對象的地方都會變化。
1.直接量字元
在正則中一般都會直接匹配字元,如
/javascript/
會直接匹配字元javascript
還支援非字母的字元匹配,如:
\o NUL字元(\u0000)
\t 定位字元(\u0009)
\n 分行符號(\u000A)
\v 垂直定位字元(\u000B)
\f 換頁符(\u000C)
\r 斷行符號符(\u000D)
\xnn 由十六進位數nn指定的拉丁字元,例如,\x0A等價於\n
\uxxxx 由十六進位數xxxx指定的Unicode字元,例如\u0009等價於\t
\cX 控制字元^X,例如,\cJ等價於分行符號\n
在Regex中,還有一些有特殊含義的標點符號,他們需要'\'來轉義
^$.*+?=!:|\/()[]{}
2.字元類
[...] 方括弧內的任一字元
[^...] 不在方括弧內的任一字元
. 任一字元
\w 任何ASCII字元組成的單詞,等價於[a-zA-Z0-9]
\W 任何不適ASCII字元組成的單詞,等價於[^a-zA-Z0-9]
\s 任何Unicode空白符
\S 任何非Unicode空白符的字元,注意\w和\S不一樣
\d 任何ASCII數值,等價於[0-9]
\D 除了ASCII數字之外的任何字元,等價於[^0-9]
[\b] 退格直接量(特例)
3.重複(次數)
? 0或1次
+ 1次或多次
* 任意次
{n} n次
{m,n} 最少m次,最多n次
{n,} n次或n次以上
正則預設是貪婪匹配的
如[a+b+] 如果要匹配aaabb,它不會匹配ab和aab等,只會匹配aaabb
[a+?b+?] 這個會匹配aaab 為什麼會產生這個區別呢?
答:+?是讓正則非貪婪匹配,那麼b這裡只會匹配一個b,那為什麼a會匹配3個呢?這是因為Regex的模式比對總是會尋找字串中第一個可能匹配的位置。
4.選項|分組|引用
| 用於分隔可供選擇的字元,如[ab|cd],他既可以匹配ab也可以匹配cd,注意:選擇項的嘗試匹配次序是左→右,因此[a|ab],當a匹配通過了之後,就不匹配ab了,就算ab是更好的匹配
() 1.單獨的項當成子運算式 /java(script)?/ 可以匹配javascript和java 即圓括弧部分形成子的運算式,可以對子運算式執行| * ?等操作
2.完整的模式中定義子模式 後面的可以引用前面圓括弧起來的運算式 /(['"])[a-z]\1/ \1引用的是第一個圓括弧裡的運算式,因此引用了['"]
3.後部引用前面的子運算式 注意: /['"][a-z]['"]/這個正則的意思是 單引號或雙引號加上一個小寫字母加上一個單引號或者雙引號,前後的單雙引號不是匹配的如果你要匹配可以這麼寫[(['"])[a-z]\1]
\加數字 可以引用前面圓括弧中的運算式
5.制定匹配位置(錨點)
^ 匹配字串的開頭,在多行檢索中,匹配一行的開頭
$ 匹配字串的結尾,在多行檢索中,匹配一行的結尾
\b 匹配一個單詞的邊界,簡言之,就是位於字元\w和\W之間的位置,或位於字元\w和字串的開頭或者結尾之間的位置
\B 匹配非單詞邊界的位置
(?=p) 零寬正向先行斷言,要求接下來的字元都與p匹配,但不能包括匹配p的那些字元
(?!p) 零寬負向先行斷言,要求接下來的字元不與p匹配
6.修飾符
寫在Regex字面量//右側的
i 執行不區分大小寫匹配
g 執行一個全域匹配,簡言之,即找到所有的匹配,而不是在找到第一個之後就停止
m 多行匹配模式,^匹配一行的開頭和字串的開頭,$匹配行的結束和字串的結束 /java$/m 可以匹配 java\nfunc
注意:當Regex是全域的時候,每次exec() 和 test()的時候都會把當前設定的lastIndex設為當前的位置,再次執行的時候就會從lastIndex的位置開始執行,因此最好每次執行的時候lastIndex設定為0
希望本文所述對大家JavaScript程式設計有所協助。
您可能感興趣的文章:
- jsRegex常用函數詳解(續)
- jsRegex常用函數詳解
- jsRegex學習筆記
- 12個常用的jsRegex
- 共用日常收集JSRegex(JavaScript regular expression)
- 學習JavaScriptRegex
- jsRegex驗證郵件地址
- 使用JavaScriptRegex如何去掉雙引號
- 詳解JavaScript編程中Regex的使用
- 日常收集JS郵箱驗證Regex