【RegExp】JavaScript中Regex判斷匹配規則以及常用方法

來源:互聯網
上載者:User

標籤:成功   允許   正則表達   簡單   split   class   範圍   貪婪   java   

字串是編程時涉及到的最多的一種資料結構,對字串進行操作的需求幾乎無處不在。 Regex是一種用來匹配字串的強有力的武器。它的設計思想是用一種描述性的語言來給字串定義一個規則,凡是符合規則的字串,我們就認為它“匹配”了。 \d可以匹配一個數字                 ‘00\d‘可以匹配 ‘007‘ , ‘\d\d\d‘可以匹配 ‘010‘ \w可以匹配一個字母或數字      ‘\w\w‘可以匹配 ‘js‘ \s可以匹配一個空格(也包括Tab等空白符) \DWS都是表示匹配與小寫字母相反的匹配關係 \數字n表示指向分組n捕獲到的文本的一個引用,能夠再次被匹配        /(\d+)(0*)\1/可以匹配‘22300223’ .可以匹配任一字元                  ‘js.‘可以匹配 ‘jsp‘‘jss‘‘js!‘ *表示任意個字元(包括0個) +表示至少一個字元 ?表示0個或1個字元 {n}表示n個字元 {n,m}表示n-m個字元 A|B可以匹配A或B       (J|j)ava(S|s)cript可以匹配 ‘JavaScript‘‘Javascript‘‘javaScript‘或者 ‘javascript‘ ^表示行的開頭           ^\d表示必須以數字開頭 $表示行的結束           \d$表示必須以數字結束用 []表示範圍              [] 中的 ^ 表示排除某個字元    [^#?] 表示除了?和#的所有字元                    [a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或底線、$開頭,後接任意個由一個數字、字母或者底線、$組成的字串,也就是JavaScript允許的變數名 [a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精確地限制了變數的長度是1-20個字元(前面1個字元+後面最多19個字元)   用Regex切分字串比用固定的字元更靈活
‘a,b;; c  d‘.split(/[\s\,\;]+/); // [‘a‘, ‘b‘, ‘c‘, ‘d‘]

  

 除了簡單地判斷是否匹配之外,Regex還有提取子串的強大功能。用 ()表示的就是要提取的分組(Group)如果Regex中定義了組,就可以在 RegExp對象上用 exec()方法提取出子串來。 exec()匹配成功後,返回一個 Array,第一個元素是Regex匹配到的整個字串,後面的字串表示匹配成功的子串。 exec()匹配失敗時返回 null^(\d{3})-(\d{3,8})$分別定義了兩個組,可以直接從匹配的字串中提取出區號和本地號碼:
var re = /^(\d{3})-(\d{3,8})$/;re.exec(‘010-12345‘); // [‘010-12345‘, ‘010‘, ‘12345‘]re.exec(‘010 12345‘); // null

  

 RegExp對象的 test()方法用於測試給定的字串是否符合條件。
var re = /^\d{3}\-\d{3,8}$/;re.test(‘010-12345‘); // truere.test(‘010-1234x‘); // false

 

需要特別指出的是,正則匹配預設是 貪婪匹配,也就是匹配儘可能多的字元。
var re = /^(\d+)(0*)$/;re.exec(‘102300‘); // [‘102300‘, ‘102300‘, ‘‘]

 

由於 \d+採用貪婪匹配,直接把後面的 0全部匹配了,結果 0*只能匹配Null 字元串了。

加個?就可以讓\d+採用非貪婪匹配:

var re = /^(\d+?)(0*)$/;re.exec(‘102300‘); // [‘102300‘, ‘1023‘, ‘00‘]
 ?: 不想被捕獲的時候使用,可以提高程式執行速度比如 ([a-z][0-9])+  ,(  ) 裡面的內容被捕獲了,如果寫成  (?:[a-z][0-9])+,整體匹配是一樣的, 就是不會捕獲 ( )裡內容。  特殊標誌 g標誌 ,表示全域匹配 i標誌,表示忽略大小寫 m標誌,表示執行多行匹配

【RegExp】JavaScript中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.