JS正則匹配及經常使用表達式

正則(Regexp)

正則(Regexp)用於模式匹配的方法


String對象的一些用以執行正則表達式模式匹配和檢索替換操做的方法javascript

String.search


1.search(),他的參數是一個正則表達式,返回一個與之匹配的字串的起始位置,若是找不到匹配的字串,它將返回-1.java

var str = 'javascript';
var reg = /script/i;
console.log(str.search(reg));   // 4

String.replace


1.replace()方法用以執行檢索與替換操做,其中一個參數是一個正則表達式,第二個參數是要進行替換的字符串.
若是正則表達式中設置了修飾符g,那麼源字符串中全部模式匹配的字串都將替換成第二個參數指定的字符串,
若是不帶修飾符g,則只替換所匹配的第一個字串.
2.正則表達式中使用圓括號括起來的子表達式是帶有從左到右的索引編號的,並且正則表達式會記憶與每一個子表達式匹配的文本.
若是在替換字符串中出現了$加數字,那麼replace()將用與指定的子表達式相匹配的文原本替換這兩個字符.
3.replace()方法還有一些其餘重要特性,第二個參數能夠是函數,該函數可以動態的計算替換字符串.正則表達式

var reg = /j(ava)sc(ri)pt/g;
console.log(str.replace(reg, '$1'));    // 'ava'
console.log(str.replace(reg, '$2'));    // 'ri'
console.log(str);   // 'javscript',原字符串保持不變,字符串永遠不會變化,除非另外賦值.

var str2 = str.replace(reg, (a, b, c, d, e) => {
    console.log(a); // 'javascript' 匹配字符串
    console.log(b); // 'ava'    $1
    console.log(c); // 'ri'     $2
    console.log(d); // 0    匹配位置
    console.log(e);
    return 1;  // 匹配結果
});
console.log(str2);  // 1

String.match


1.match()方法是最經常使用的String正則表達式方法.它的惟一參數就是一個正則表達式,返回的是一個由匹配結果組成的數組.
若是該正則表達式設置了修飾符g,則該方法返回的數組包含字符串中的全部匹配結果.api

// match
var str = 'javascriptjava';
var reg = /java/;
console.log(str.match(reg));   // ['java', 0]

var text = 'Visit my blog at http://www.example.com/~david';
var url = /(\w+):\/\/([\w.]+)\/(\S*)/;
var result = text.match(url);
console.log(result);
console.log(result.length); // 4
for (var i = 0; i < result.length; i++) {
    console.log(result[i]); // 'http://www.example.com/~david',http,'www.example.com','~david'
}

String.split


split()用以將調用它的字符串拆分爲一個子串組成的數組,使用的分隔符是split()參數.
split()方法的參數能夠是一個正則表達式,這使得split()方法異常強大.數組

// split
var str = 'abcde';
console.log(str.split('c')); // ['ab', 'de']

// 能夠指定分隔符,容許兩邊能夠留有任意多的空白字符
var str = '1,  2,3, 4,    5';
console.log(str.split(/\s*,\s*/));  // [1, 2, 3, 4, 5]

經常使用正則表達式


日期匹配

  • 時間匹配
3232319:22:33231321
\d{2}:\d{2}:\d{2}
19:22:33
  • 年月日匹配
3231971-01-022313
\d{4}-\d{2}-\d{2}
1971-01-02

郵箱匹配

15615616@qq.com.com
([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+[.]{1}+([a-zA-Z0-9_-])
15615616@qq.com

網址匹配截取

https://api.123xxx.cn/sssssss...
[\w]{4,5}://+[\w\d.:]+/
https://api.123xxx.cn/

手機號碼

15680173097231
1[34578]\d{9}
15680173097

身份證號

  • 15位、18位數字
/^\d{15}|\d{18}$/
  • 短身份證號碼(數字、字母x結尾)
^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

QQ號

/[1-9][0-9]{4,}/
相關文章
相關標籤/搜索