基本符號:^ 表示匹配字串的開始位置 (例外 用在中括號中[ ] 時,可以理解為取反,表示不匹配括號中字串)
$ 表示匹配字串的結束位置
* 表示匹配 零次到多次
+ 表示匹配 一次到多次 (至少有一次)
? 表示匹配零次或一次
. 表示匹配單個字元
| 表示為或者,兩項中取一項
( ) 小括號表示匹配括號中全部字元
[ ] 中括號表示匹配括號中乙個字元 範圍描述 如[0-9 a-z a-z]
大括號用於限定匹配次數 如 表示匹配n個字元 表示至少匹配n個字元 表示至少n,最多m
\ 轉義字元 如上基本符號匹配都需要轉義字元 如 \* 表示匹配*號
\w 表示英文本母和數字 \w 非字母和數字
\d 表示數字 \d 非數字
一些簡單的說明與案例
1.正規表示式的匹配規則
1字面量字元大部分字元在正規表示式中,就是字面的含義,比如/a/匹配a,/b/匹配b。如果在正規表示式之中,
某個字元只表示它字面的含義(就像前面的a和b),那麼它們就叫做「字面量字元」(literal characters)。
案例:
/dog/.test('old dog') // true
上面**中正規表示式的dog,就是字面量字元,所以/dog/匹配old dog,因為它就表示d、o、g三個字母連在一起。
2.元字元表示匹配單個字元
匹配除回車(\r)、換行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字元。
// 注意,對於碼點大於0xffff字元,點字元不能正確匹配,會認為這是兩個字元。
console.log(/c.t/.test('cbt')); //true
console.log(/2.9/.test('269')) //true
^ 表示匹配字串的開始位置(例外 用在中括號中 時, 可以理解為取反, 表示不匹配括號中字串)
console.log(/^9654/.test(9654)) //true
console.log(/^9654/.test('9654666')) //true
console.log(/^9654/.test('965')) //false
console.log(/^[9654]/.test('8656')) //true 匹配以括號內數字開頭都為true
console.log(/[^9654]/.test('9')) //false
console.log(/[^]/.test('9')) //true 如果方括號內沒有其他字元,即只有[^],就表示匹配一切字元,其中包括換行符。相比之下,點號作為元字元(.)是不包括換行符的
$ 表示匹配字串的結束位置
console.log(/9654$/.test(9654)) //true
console.log(/^9654$/.test('9654666')) //false // 從開始位置到結束位置只有9654
console.log(/[9654]$/.test('965')) //true
console.log(/[9654$]/.test('5')) //true
// 2.3選擇符 (|) 豎線符號(|)在正規表示式中表示「或關係」(or),即cat|dog表示匹配cat或dog。
console.log(/zjl|zmf|dwb/.test('dwb'));
3.轉義符正規表示式中那些有特殊含義的元字元,如果要匹配它們本身,就需要在它們前面要加上反斜槓。比如要匹配+,就要寫成\+。c
onsole.log(/2+4/.test('2+4')); //false
console.log(/2\+4/.test('2+4')); //true
// 正規表示式中,需要反斜槓轉義的,一共有12個字元:^、.、[、$、(、)、|、*、+、?、)表示。表示恰好重複n次,表示至少重複n次,表示重複不少於n次,不多於m次。
console.log(/lok/.test('look')); // true
console.log(/ lo k /.test('loooooook')); // true
8.量詞符量詞符用來設定某個模式出現的次數。
?問號表示某個模式出現0次或1次,等同於 。
* 星號表示某個模式出現0次或多次,等同於 。
+ 加號表示某個模式出現1次或多次,等同於 。
// t 出現0次或1次
console.log(/ t ? est /.test('test')) // true
console.log(/ t ? est /.test('est')) // true
// t 出現1次或多次
console.log(/ t + est /.test('test'))// true
console.log(/ t + est /.test('ttest')) // true
console.log(/ t + est /.test('est')) // false
// t 出現0次或多次
console.log(/ t * est /.test('test')) // true
console.log(/ t * est /.test('ttest')) // true
console.log(/ t * est /.test('tttest')) // true
console.log(/ t * est /.test('est')) // true
9.貪婪模式上面的三個量詞符,預設情況下都是最大可能匹配,即匹配直到下乙個字元不滿足匹配規則為止。這被稱為貪婪模式。
let s = 'qqq';
console.log(s.match(/q+/));
// 去除貪婪模式的方法是在模式結尾新增?
console.log(s.match(/q+?/));
10.修飾符修飾符(modifier)表示模式的附加規則,放在正則模式的最尾部。修飾符可以單個使用,也可以多個一起使用。
預設情況下,第一次匹配成功後,正則物件就停止向下匹配了。g修飾符表示全域性匹配(global),加上它以後,正則物件將匹配全部符合條件的結果,主要用於搜尋和替換。
var regex = /b/;
var str = 'abba';
console.log(regex.test(str)); // true
console.log(regex.test(str)); // true
console.log(regex.test(str));// true
var regex2 = /b/g;
var str = 'abba';
console.log(regex2.test(str)); // true
console.log(regex2.test(str)); // true
console.log(regex2.test(str)); // false
預設情況下,正則物件區分字母的大小寫,加上i修飾符以後表示忽略大小寫(ignorecase)。
console.log(/abc/.test('abc')) // false
console.log(/abc/i.test('abc')) // true
m修飾符表示多行模式(multiline),會修改 ^ 和$的行為。預設情況下(即不加m修飾符時),^ 和$匹配字串的開始處和結尾處,加上m修飾符以後,^ 和$還會匹配行首和行尾,即 ^ 和$會識別換行符(\n)。
console.log(/world$/.test('hello world\n')) // false
console.log(/world$/m.test('hello world\n')) // true
11.組合模式 :正規表示式的括號表示分組匹配,括號中的模式可以用來匹配分組的內容。
正規表示式簡單語法及常用正規表示式
表示匹配字串的開始位置 例外 用在中括號中 時,可以理解為取反,表示不匹配括號中字串 表示匹配字串的結束位置 匹配中文字元的正規表示式 u4e00 u9fa5 匹配雙位元組字元 包括漢字在內 x00 xff 匹配空行的正規表示式 n s r 匹配html標記的正規表示式 匹配首尾空格的正規表示式 s...
正規表示式語法及常用的正規表示式
語法請進 看,很詳細 很好 就不複製了。常用正規表示式 正規表示式用於字串處理 表單驗證等場合,實用高效。現將一些常用的表示式收集於此,以備不時之需。匹配中文字元的正規表示式 u4e00 u9fa5 評注 匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元 包括漢字在內 x00 xf...
Lesson 十 正規表示式語法及常用正規表示式
表示匹配字串的開始位置 例外 用在中括號中 時,可以理解為取反,表示不匹配括號中字串 表示匹配字串的結束位置 表示匹配 零次到多次 表示匹配 一次到多次 至少有一次 表示匹配零次或一次 表示匹配單個字元,任意字元 表示為或者,兩項中取一項 小括號表示匹配括號中全部字元 中括號表示匹配括號中乙個字元 ...