用法
- search():檢索字符串中指定的子字符串,返回子串初始位置
- repalce():字符串中替換指定的子字符串
- match():找到一個或多個正則表達式的匹配
- split():把政府從分割為字符串數(shù)組
- RegExp對象
- exec():檢索字符串中的正則表達式的匹配,返回一個數(shù)組,存放匹配的結果。無返回null
7.test():檢測
var str = "Visit Runoob!";
var n = str.search(/Runoob/i);
console.log(n)//6
var txt = str.replace(/Runoob/i,"microsoft");
console.log(txt)//Visit microsoft!
//pattern(模式) 描述了表達式的模式
//modifiers(修飾符) 用于指定全局匹配、區(qū)分大小寫的匹配和多行匹配
var patt=new RegExp(pattern,modifiers);
//或者更簡單的方式:
var patt=/pattern/modifiers;
var re= new RegExp("\\w+");
var re=/\w+/; //與上面的寫法同義
注意:當使用構造函數(shù)創(chuàng)造正則對象時,需要常規(guī)的字符轉義規(guī)則(在前面加反斜杠 \)。
var patt = /e/;
patt.exec("The best things in life are free!");//e
寫法
| 規(guī)則 | 描述 | 規(guī)則 | 描述 |
|---|---|---|---|
| [xyz] | 匹配方括號的任何一個字符 | [^xyz] | 匹配未包含的字符集 |
| \w | 數(shù)字字母下劃線 | \W | 非數(shù)字字母下劃線 |
| \s | 空白字符 | \S | 非空白字符 |
| \d | 匹配數(shù)字 | \D | 匹配非數(shù)字 |
| \b | 單詞開頭或結束的位置 | \B | 非單詞開頭或結束的位置 |
| ^ | 開始位置 | $ | 結束位置 |
| 修飾符 | 描述 |
|---|---|
| --i | 執(zhí)行對大小寫不敏感的匹配。 |
| --g | 執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。 |
| --m | 執(zhí)行多行匹配。 |
| --s | 正則的原始字符串形式 |
| 表達式 | 描述 |
|---|---|
| [abc] | 查找方括號之間的任何字符。 |
| [0-9] | 查找任何從 0 至 9 的數(shù)字。 |
| (x|y) | 查找任何以| 分隔的選項。 |
| 量詞 | 描述 |
|---|---|
| n+ | 匹配任何包含至少一個 n 的字符串。 |
| n* | 匹配任何包含零個或多個 n 的字符串。 |
| n? | 匹配任何包含零個或一個 n 的字符串。 |
| {n} | 指定匹配n數(shù) |
| {n,} | 指定匹配n數(shù)或更多 |
| {n,m} | 匹配范圍n-m次 |
詳解
- 匹配多個字符{m,n}
/ab{2,5}c/表示匹配這樣一個字符串:第一個字符是“a”,接下來是2到5個字符“b”,最后是字符“c”
var regex=/ab{2,5}c/g;
//第一個字符是a,第二到第五個字符是b,最后是c;g是全局
var string = "abc abbc abbbc abbbbc abbbbbc abbbbbbc";
console.log( string.match(regex) );
// => ["abbc", "abbbc", "abbbbc", "abbbbbc"]
匹配單個[abc]
[abc],表示該字符是可以字符“a”、“b”、“c”中的任何一個。
/a[123]b/可以匹配一下三種字符串:"a1b","a2b","a3b"。范圍表示法
[123456abcdefGHIJKLM]?=>?[1-6a-fG-M]
注意:如果要匹配“a”,"-","z"這三個中的任意一個字符,該怎么做呢?
???不能寫成[a-z]因為會被認為是范圍
???可以這么寫:[-az](放在開頭)或[az-](放在結尾)或[a-z](轉義符)簡寫形式
\d、\D、\w、\W……貪婪匹配與惰性匹配:
var regex = /\d{2,5}/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["123", "1234", "12345", "12345"]
??貪婪匹配:正則/\d{2,5}/,表示數(shù)字連續(xù)出現(xiàn)2到5次。會匹配2位、3位、4位、5位連續(xù)數(shù)字。但是其是貪婪的,它會盡可能多的匹配。你能給我6個,我就要5個。你能給我3個,我就3要個。反正只要在能力范圍內(nèi),越多越好。
??惰性匹配:/\d{2,5}?/表示,雖然2到5次都行,當2個就夠的時候,就不在往下嘗試了。對惰性匹配的記憶方式是:量詞后面加個問號
var regex = /\d{2,5}?/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) );
// => ["12", "12", "34", "12", "34", "12", "34", "56"]
通過在量詞后面加個問號就能實現(xiàn)惰性匹配,因此所有惰性匹配情形如下:
m,n}?
{m,}?
??
+?
*?