正则表达式知识点整理

注:可使用 www.regexper.com 在线正则辅助工具。

1.什么是正则表达式?正则表达式就是按照某种规则去匹配符合条件的字符串。

 

2.如何实例化RegExp对象?

  第一种:字面量。

      如:var reg = /\bis\b/g;

  第二种:构造函数。

      如:var reg = new RegExp('\\bis\\b','g');

 

3.修饰符。

  g:全文搜索。  i:忽略大小写。  m:多行搜索。

 

4.正则表达式由两种基本字符类型组成:

  --原义文本字符。

  --元字符(在正则表达式中有特殊含义的非字母类型字符)。  * + ? $ ^ . |  \  ()  {}  []

 

5.字符类。

  可以使用元字符[]来构建一个简单类。如 [abc] 表示或 a 或 b 或 c 都行。

 

6.字符类取反。

  使用元字符 ^ 创建反向类/负向类。如 [^abc] 表示不是字符 a 或 b 或 c。

 

7.范围类。

  [a-z]表示从 a 到 z 的任意字符。在 [] 组成的类内部可以连写,[a-zA-Z]。

 

8.预定义类。

字符 等价类 含义
. [^\r\n] 除了回车和换行以外的所有字符
\d [0-9] 数字字符
\D [^0-9] 非数字字符
\s [\t\n\x0B\f\r] 空白符
\S [^\t\n\x0B\f\r] 非空白符
\w [a-zA-Z_0-9] 单词字符(字母、数字、下划线)
\W [^a-zA-Z_0-9] 非单词字符

 

 

 

 

 

 

 

 

9.边界。

  ^:以***开始。  $:以***结束。  \b:单词边界。  \B:非单词边界。

 

10.量词。

  ?:出现一次或零次(最多出现一次)。

  +:出现一次或多次(至少出现一次)。

  *:出现零次或多次(任意次)。

  {n}:出现n次。

  {n,m}:出现n到m次。

  {n,}:至少出现n次。

 

11.贪婪模式。

  尽可能多的匹配。

  例如: "12345678".replace(/\d{3,6}/,'X');

     =>X78

 

12.非贪婪模式。

  尽可能少的匹配。在量词后加上?即可。

  例如: "12345678".replace(/\d{3,6}?/,'X');
     =>XX78

 

13.分组。

  使用 () 可以达到分组的功能,使量词作用于分组。

 

14.或。

  使用 | 可以达到或的效果。

 

15.反向引用。

  例如:2015-12-25 => 12/25/2015

     "2015-12-25".replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1');

 

16.忽略分组。

  不希望捕获某些分组,只需要在分组内加上 ?: 就可以。

  例如: (?:Braa).(ok)  其中Braa被忽略,ok为$1。

 

17.前瞻。

  正则表达式从文本头部开始想尾部解析,文本尾部方向成为“前”。

  前瞻就是在正则表达式匹配到规则的时候,向前检查是否符合断言。

  正向前瞻: exp(?=assert);

  负向前瞻: exp(?!assert);

  例如: "a2*3".replace(/\w(?=\d)/g,'X');

      =>X2*3

 

18.对象属性。

  global。

  ignore。

  mulitiline。

  lastIndex。是当前表达式匹配内容的最后一个字符的下一个位置。

  source。正则表达式的文本字符串。

 

19.RegExp.test(str)。

  用于测试字符串参数中是否存在匹配正则表达式模板的字符串。

 

20.RegExp.exec(str)。

  使用正则表达式模式对字符串进行搜索,并将更新全局RegExp对象的属性以反映匹配结果。

 

posted @ 2017-07-23 13:27  咕噜的鱼  阅读(462)  评论(0)    收藏  举报