javascriptRegex定義(文法)總結,javascriptRegex

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.