正規表示式簡單語法及常用正規表示式

2021-08-31 07:02:26 字數 4383 閱讀 9955

基本符號:

^  表示匹配字串的開始位置  (例外  用在中括號中[ ] 時,可以理解為取反,表示不匹配括號中字串)

$  表示匹配字串的結束位置

*  表示匹配 零次到多次

+  表示匹配 一次到多次 (至少有一次)

?  表示匹配零次或一次

.  表示匹配單個字元 

|  表示為或者,兩項中取一項

(  ) 小括號表示匹配括號中全部字元

[  ] 中括號表示匹配括號中乙個字元 範圍描述 如[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 十 正規表示式語法及常用正規表示式

表示匹配字串的開始位置 例外 用在中括號中 時,可以理解為取反,表示不匹配括號中字串 表示匹配字串的結束位置 表示匹配 零次到多次 表示匹配 一次到多次 至少有一次 表示匹配零次或一次 表示匹配單個字元,任意字元 表示為或者,兩項中取一項 小括號表示匹配括號中全部字元 中括號表示匹配括號中乙個字元 ...