JS實現正規表示式

桃西子牛發表於2017-02-22

一、建立正規表示式

   一共有兩種方式:

      1.直接量:var re = /[0-9]*/;

      2.通過RegExp物件的建構函式:var re = RegExp(“[0-9]*”,”i”);

二、RegExp中正規表示式的屬性與方法,以及String中常用的匹配字串的方法

  1.RegExp():建構函式,有兩個引數,第一個引數是正規表示式,第二個引數是表示使用什麼樣的模式來匹配。第二個引數可以省略。

  2.exec():一個在字串中執行查詢匹配的RegExp方法,它返回一個陣列(未匹配到則返回null)。該方法有一個引數,表示要匹配的字串

var re = RegExp("[0-9]{2}");//匹配兩個數字
var regex =  re.exec(1234567);//返回的是一個資料["12", index: 0, input: "1234567"]

exec()

  3.test():一個在字串中測試是否匹配的RegExp方法,它返回true或false。該方法有一個引數,表示要匹配的字串

var re = new RegExp("[0-9]{2}");
var result = re.test(1234567);

test()

  以下是String中匹配字串的方法  

  4.match():一個在字串中執行查詢匹配的String方法,它返回一個陣列或者在未匹配到時返回null。  

var re = new RegExp("[0-9]{2}");
var result = "1234567".match(re);//結果["12"]

match()

  5.search():一個在字串中測試匹配的String方法,它返回匹配到的位置索引,或者在失敗時返回-1。

var re = new RegExp("[0-9]{3}");
var result = "jack12314563".search(re);//結果  4

search()

  6.replace():一個在字串中執行查詢匹配的String方法,並且使用替換字串替換掉匹配到的子字串。

var re = new RegExp("([0-9]{3})");
var result = "jack123tom".replace(re,`數字`);//jack數字tom

replace()

  7.split():一個使用正規表示式或者一個固定字串分隔一個字串,並將分隔後的子字串儲存到陣列中的String方法。

var re = new RegExp("([,,])");
var result = "jack,tom,superman,老王,老李".split(re);//["jack", ",", "tom", ",", "superman", ",", "老王", ",", "老李"]
var result = "jack,tom,superman,老王,老李".split(re,3);//["jack", ",", "tom"]

View Code

 

三、使用模式來匹配字串

  在JS中有三種模式:

  g:執行全域性搜尋,預設,在查詢到匹配的情況下是停止查詢的。如果使用g模式匹配的話,會找到所有的匹配。

var re = new RegExp("1([0-9]*?)3","g");
var result = "12314563".match(re);//結果 ["123", "14563"]

g模式下的匹配

  i:忽略大小寫的匹配

var re = new RegExp("jack","i");
var result = re.exec("JACK TELL ME");//結果  ["JACK", index: 0, input: "JACK TELL ME"]

i模式下的匹配

  m:多行下的模式匹配,其中^表示行的開始,$表示行的結尾。

var re = new RegExp(".*jack$","m");
var result = re.exec("jack TELL ME
tom TELL jack");//結果 ["tom TELL jack", index: 13, input: "jack TELL ME↵tom TELL jack"]

m模式下的匹配

  

四、例子

//查詢字串中所有的郵箱

var re = /w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/gi;
var result = “tom@qq.com這是誰的郵箱,廈門:1234567@163.com,還有這個 google@gmail.com”.match(re);
console.log(result);//[“tom@qq.com”, “1234567@163.com”, “google@gmail.com”]

 

以上資源部分來源於:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions

 


相關文章