Javascript正則表達式學習

其實,正則還是要靠自己多寫,這樣才能記住那些複雜的規則,推薦MDN的基礎篇及正美的博客,希望對你有幫助:

  1. MDN正則表達式基礎
  2. 正美:正則表達式教程

正則表達式

元字符匹配

\b 比如: 匹配hello

  var reg = /\bhello\b/;
  console.log(reg.test('hello')); // true

字符轉義

\.或\* 比如: 匹配以*開頭的字符串

  var reg = /^\*\w*/;
  console.log(reg.test('*123&dkkfwe')); // true

字符類

\d 跟 [0-9] 表示只能爲數字;
\w 跟 [0-9a-zA-Z] 表示只能爲字母數字;
[?!.]表示匹配(.或?或!)

重複

+ 表示1次或多次
* 表示重複多次或零次
? 表示重複零次或一次
{n} 表示重複n次
{n, m} 表示重複n到m次
{n,} 表示重複那次或多次

分支條件

| 表示分支符,表示條件分支,分支的規則是從左至右;

分組

小括號來指定子表達式(也叫做分組),比如:

  var reg = /(\d{1,3}\.){3}/;
  reg.test('256.127.234.'); // true

反義

\W 表示匹配任意不是字母、數字、下劃線、漢字的字符
\D 匹配任意非數字的字符
\S 匹配任意不是空白符的字符
\B 匹配任意不是單詞開頭或結束的位置
[^\x] 匹配除了x以外的任意字符

捕獲性分組和非捕獲性分組

並不是所有分組都能創建反向引用,有一種特別的分組稱之爲非捕獲性分組,反之則爲捕獲性分組;比如:

  // 非捕獲行分組
  var color = '#999999';
  var result = /#(?:\d+)/.test(color);
  console.log(RegExp.$1); // ''
  // 捕獲性分組
  var color1 = '#888888';
  var result2 = /#(\d+)/.test(color1);
  console.log(RegExp.$1); // 888888

非捕獲分組,只是用來匹配,並不會提取分組內容。也就是說,如果我們只想用圓括號將一些字符用數量詞修飾,並不需要這個分組的內容,這就是非捕獲分組。

正向前瞻與負向前瞻

這兩個都是分組內的一些條件:
(?=exp) 正向前瞻,匹配exp前面的位置
(?!exp) 負向前瞻,匹配exp後面不是exp的位置

發佈了38 篇原創文章 · 獲贊 27 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章