正则表达式regular expression:RegExp
正则表达式是用来处理字符串的规则
只能处理字符串
它是一个规则:可以验证字符串是否符合某个规则(test),也可以把字符串中符合规则的内容捕获到(exec/match)
let str = "good good study, day day up!" ;
let reg = /\d+/ ;
reg. test ( str) ;
str = "2020-12-17"
reg. exec ( str) ;
编写正则表达式
字面量创建方式 let reg = /\d+/,两个斜杠之间包起来的,都是用来描述规则的元字符
构造函数模式创建,两个参数:元字符字符串,修饰符字符串:let reg = new RegExp("\d+");
元字符:定义当前正则的组合规则,例如:\d+
修饰符
* 零到多次
+ 一到多次
? 零次或者一次
{
n} 出现n次
{
n, } 出现大于等于n次
{
n, m} 出现n到m次
\ 转义字符(普通- > 特殊- > 普通)
. 除\n(换行符)以外的任意字符
^ 以哪一个元字符作为开始
$ 以哪一个元字符作为结束
\n 换行符
\d 0 ~ 9 之间的一个数字字符
\D 非0 ~ 9 之间的一个字符(非数字字符,大写和小写意思是相反的)
\w 数字、字母、下划线中的任意一个字符 [ 0 - 9 a- zA- Z_ ]
\W 非数字、字母、下划线中的任意一个字符 [ ^ 0 - 9 a- zA- Z_ ]
\s 一个空白字符
\t 一个制表符(一个tab键,四个空格)
\b 匹配一个单词的边界
x| y x或者y中的一个字符
[ xyz] x或y或z中的一个字符
[ ^ xy] 除了x和y以外的任意字符
[ a- z] 指定a- z这个范围中的任意字符 [ 0 - 9 a- zA- Z_ ] === \w
[ ^ a- z] 除了a- z以外的任意字符
( ) 分组符号
( ? : ) 只匹配不捕获
( ? = ) 正向预查
( ? ! ) 负向预查
i => ignorecase 忽略单词大小写匹配
m => multiline 可以进行多行匹配
g => global 全局匹配
元字符及其含义完整列表
字符
描述
\
将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,‘n’ 匹配字符 “n”。’\n’ 匹配一个换行符。序列 ‘\’ 匹配 “” 而 “(” 则匹配 “(”。
^
匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。
$
匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。
*
匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+
匹配前面的子表达式一次或多次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
?
匹配前面的子表达式零次或一次。例如,“do(es)?” 可以匹配 “do” 或 “does” 。? 等价于 {0,1}。
{n}
n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,}
n 是一个非负整数。至少匹配n 次。例如,‘o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o