/g 全局匹配多个,/i 不区分大小写;
/d/ 匹配数字(d from digit),
/s/ (s from space) 空格符号:包括空格,制表符
,换行符
和其他少数稀有字符,例如 v
,f
和
。
w
(“w” from “word”) “单字”字符:拉丁字母或数字或下划线_
。非拉丁字母(如西里尔字母或印地文)不属于w
。
例如,dsw
表示“数字”,后跟“空格字符”,后跟“单字字符”,例如 1 a
。
alert( "I love HTML5!".match(/swwwwd/) ); // ' HTML5'
反向类
每个字符类都有一个反向类,用相同的大写字母表示。
D 非数字; S 非空格字符 ; W非单字字符
点(.) 是匹配任何字符 ,
点表示“任何字符”,而不是“缺少字符”。必须有一个与之匹配的字符
d
—— 数字。D
—— 非数字。s
—— 空格符号,制表符,换行符。S
—— 除了s
。w
—— 拉丁字母,数字,下划线'_'
。W
—— 除了w
。.
—— 任何带有's'
标志的字符,否则为除换行符
字符串开始 ^ 和末尾 $
"m" — 多行模式 字符串多行(即字符串不在同一行中间有换行符)
词边界:
既可以用于单词,也可以用于数字。
转义
如果要把特殊字符作为常规字符来使用,只需要在它前面加个反斜杠。
alert( "Chapter 5.1".match(/d.d/) ); // 5.1
传递一个字符串(参数)给 new RegExp
时,我们需要双倍反斜杠 \
,因为字符串引号会消费其中的一个
let regStr = "\d\.\d";
alert(regStr);// d.d (correct now)
let regexp = new RegExp(regStr);
alert( "Chapter 5.1".match(regexp) ); // 5.1
集合和范围 [...]
[eao]
意味着查找在 3 个字符 'a'
、'e'
或者 `‘o’ 中的任意一个,非多个。
方括号也可以包含字符范围
alert( "Exception 0xAF".match(/x[0-9A-F][0-9A-F]/g) ); // xAF
alert( "alice15@gmail.com".match(/[^dsA-Z]/gi) ); // @ .
在集合中不需要转义(不需要反斜杠,转义了也没问题)
- 在开头或者结尾表示一个破折号(在这些位置该符号表示的就不是一个范围) `pattern:’-’。
- 在不是开头的位置表示一个插入符号(在开头位置该符号表示的是排除)
'^'
。
量词 `+,*,?` 和 `{n}`
n代表数量几个;
+最少一个 相当于{1,} ;
* 代表着“零个或多个”,相当于 {0,} ;
?代表“零个或一个”,相当于 {0,1}
我们可以添加 来排除更多位数的数字:
d{5}
。
某个范围的位数:{3,5} 3-5位数字
选择(OR)|
我们通常用圆括号把模式中的选择部分括起来,像这样 before(XXX|YYY)after
。
gr(a|e)y
严格等同gr[ae]y
。gra|ey
匹配 “gra” or “ey”。