参数:
-
g: 全局匹配;找到所有匹配,而不是在第一个匹配后停止
-
i: 忽略大小写
-
m: 多行; 将开始和结束字符(^和$)视为在多行上工作(也就是,分别匹配每一行的开始和结束(由 \n 或 \r 分割),而不只是只匹配整个输入字符串的最开始和最末尾处。
-
u: Unicode; 将模式视为 Unicode 序列点的序列; (能匹配到码点大于 0Xffff 的字符)
-
y: 粘性匹配; 仅匹配目标字符串中此正则表达式的 lastIndex 属性指示的索引(并且不尝试从任何后续的索引匹配)。
-
s: dotAll 模式,匹配任何字符(包括终止符'\n') ----> var str = 'abc\n'; var reg = /.+/gs; reg.exec(str) // 连换行符也能匹配出来。
-
".": 匹配任意单个字符,但是行结束符除外: \n \r \u2028 或 \u2029。
字符类别:
- . : 匹配任意单个字符,但是行结束符除外: \n \r 。
- \d: [0-9]
- \D: [^0-9]
- \w: [A-Za-z0-9_],匹配任意来自基本拉丁字母表中的字母数字字符,还包括下划线。
- \W: [^a-za-z0-9_]
- \s: 匹配一个空白符,包括空格、制表符、换页符和其它 unicode 空格。 等价于[\f\n\r\t\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004 \u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f \u3000] -----> eg: /\s\w*/.exec('foo bar') // bar: 匹配空格后面的字符
- \S: [^ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004 \u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f \u3000]
- \t: 匹配一个水平制表符(tab)
- \r: 匹配一个回车符(carriage return)
- \n: 匹配一个换行符(linefeed)
- \v: 匹配一个垂直制表符(vertical tab)
- \f: 匹配一个换页符(form-feed)
- \0: 匹配一个 NUL 字符。 不要再此后面跟小数点。
字符集合:
- [xyz]: 一个字符集合,也叫字符组。 匹配集合中的任意“一个”字符。 可以使用连字符号指定范围: [a-d] === [abcd][^xyz]: 反义字符组。 也可以使用连字符号表示范围。 [^a-d] === [^abcd]
- ^: 匹配从什么开始。 /^A/不匹配'an A'中的 A,但匹配'An A'中的'A'
> 注意点: 当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠\)。 eg: var re = new RegExp('\\w+') === var reg = /\w+/
var str = "abc";
var reg = /.+/g;
reg.exec(str); // 'abc'
先行断言: x 只有在 y 前面才匹配,必须写成/x(?=y)。
/\d+(?=%)/.exec("100% of US")[0]; // ['100']
后行断言: x 只有不在 y 前面才匹配。
/(?!%)\D/.exec("100% of US")[0]; //
网友评论