正则表达式知识点整理
注:可使用 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对象的属性以反映匹配结果。

浙公网安备 33010602011771号