JS——Regex

來源:互聯網
上載者:User

標籤:code   rip   定義   個數   元素   提取子串   返回   語言   子串   

RegExpRegex

Regex是一種用來匹配字串的強有力的武器。它的設計思想是用一種描述性的語言來給字串定義一個規則,凡是符合規則的字串,我們就認為它“匹配”了,否則,該字串就是不合法的。

(1) \d可以匹配一個數字

(2) \w可以匹配一個字母或數字,

(3) .可以匹配任一字元

(4)\s可以匹配一個空格(也包括Tab等空白符)

(5)用*表示任意個字元(包括0個),用+表示至少一個字元,用?表示0個或1個字元,用{n}表示n個字元,用{n,m}表示n-m個字元

(6)特殊字元,在Regex中,要用‘\‘轉義

(7)要做更精確地匹配,可以用[]表示範圍

(8)A|B可以匹配A或B

(9)^表示行的開頭,^\d表示必須以數字開頭。$表示行的結束,\d$表示必須以數字結束。

作用:

1. RegExp對象的test()方法用於測試給定的字串是否符合條件。

var re = /^\d{3}\-\d{3,8}$/;re.test(‘010-12345‘); // truere.test(‘010-1234x‘); // falsere.test(‘010 12345‘); // false

2.用Regex切分字串比用固定的字元更靈活,請看正常的切分代碼:

‘a,b;; c  d‘.split(/[\s\,\;]+/); // [‘a‘, ‘b‘, ‘c‘, ‘d‘]

3.Regex還有提取子串的強大功能,用()表示的就是要提取的分組(Group)。

^(\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

如果Regex中定義了組,就可以在RegExp對象上用exec()方法提取出子串來。

exec()方法在匹配成功後,會返回一個Array,第一個元素是Regex匹配到的整個字串,後面的字串表示匹配成功的子串。

exec()方法在匹配失敗時返回null

4.需要特別指出的是,正則匹配預設是貪婪匹配,也就是匹配儘可能多的字元。舉例如下,匹配出數字後面的0

var re = /^(\d+)(0*)$/;re.exec(‘102300‘); // [‘102300‘, ‘102300‘, ‘‘]

  必須讓\d+採用非貪婪匹配(也就是儘可能少匹配),才能把後面的0匹配出來,加個?就可以讓\d+採用非貪婪匹配:

var re = /^(\d+?)(0*)$/;re.exec(‘102300‘); // [‘102300‘, ‘1023‘, ‘00‘]

5.全域搜尋

JavaScript的Regex還有幾個特殊的標誌,最常用的是g,表示全域匹配。

全域匹配類似搜尋,因此不能使用/^...$/,那樣只會最多匹配一次。

Regex還可以指定i標誌,表示忽略大小寫,m標誌,表示執行多行匹配。

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.