正则表达式 符号记忆
/g 全局匹配多个,/i 不区分大小写;
/\d/ 匹配数字(d from digit),
/\s/ (s from space) 空格符号:包括空格,制表符 \t,换行符 \n 和其他少数稀有字符,例如 \v,\f 和 \r。
\w(“w” from “word”) “单字”字符:拉丁字母或数字或下划线_。非拉丁字母(如西里尔字母或印地文)不属于\w。
例如,\d\s\w表示“数字”,后跟“空格字符”,后跟“单字字符”,例如 1 a。
alert( "I love HTML5!".match(/\s\w\w\w\w\d/) ); // ' HTML5'
反向类
每个字符类都有一个反向类,用相同的大写字母表示。
\D 非数字; \S 非空格字符 ; \W非单字字符
点(.) 是匹配任何字符 ,
点表示“任何字符”,而不是“缺少字符”。必须有一个与之匹配的字符
\d—— 数字。\D—— 非数字。\s—— 空格符号,制表符,换行符。\S—— 除了\s。\w—— 拉丁字母,数字,下划线'_'。\W—— 除了\w。.—— 任何带有's'标志的字符,否则为除换行符\n之外的任何字符。
字符串开始 ^ 和末尾 $
"m" — 多行模式 字符串多行(即字符串不在同一行中间有换行符)
词边界:\b

\b 既可以用于单词,也可以用于数字。

转义
如果要把特殊字符作为常规字符来使用,只需要在它前面加个反斜杠。
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(/[^\d\sA-Z]/gi) ); // @ .
在集合中不需要转义(不需要反斜杠,转义了也没问题)
- 在开头或者结尾表示一个破折号(在这些位置该符号表示的就不是一个范围) `pattern:’-’。
- 在不是开头的位置表示一个插入符号(在开头位置该符号表示的是排除)
'^'。
量词 `+,*,?` 和 `{n}`
n代表数量几个;
+最少一个 相当于{1,} ;
* 代表着“零个或多个”,相当于 {0,} ;
?代表“零个或一个”,相当于 {0,1}
我们可以添加 \b 来排除更多位数的数字:\b\d{5}\b。
某个范围的位数:{3,5} 3-5位数字
选择(OR)|
我们通常用圆括号把模式中的选择部分括起来,像这样 before(XXX|YYY)after。
gr(a|e)y严格等同gr[ae]y。gra|ey匹配 “gra” or “ey”。

浙公网安备 33010602011771号