新建
字面量let re=/ab+c/
构造函数let re=new RegExp("ab+c")
特殊字符
符号 | 说明 | |
---|---|---|
\ |
在非字符串之前的反斜杠表示下一个字符是特殊字符,不能按照字面理解。 ‘b’ => 小写字母 ‘\b’ => 字符边界 在特殊字符之前的反斜杠表示下一个字符不是特殊字符,应按照字母理解 |
|
^ |
1.匹配输入字符串的开始位置,2.如果出现在一个字符集合模式(方括号)里,表示不接受该方括号表达式中的字符集合。要匹配 ^ 字符本身,请使用 \^ 。 |
|
$ |
匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline (多行标志)属性,则 \$ 也匹配 '\n' 或 '\r' 。要匹配 $ 字符本身,请使用 \$ 。 |
|
. |
默认匹配除换行符\n 之外的任何单个字符,如果 s (“dotAll”) 标志位被设为 true,它也会匹配换行符。 |
|
(x) |
标记一个子表达式 的开 x 始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。 | |
[xyz] |
一个字符集。匹配 x,y,z 三个字符中的任意一个 | |
[^xyz] |
一个反向字符集。也就是说, 它匹配任何没有包含在方括号中的字符。你可以使用破折号(-)来指定一个字符范围。任何普通字符在这里都是起作用的。[^abc] 等于[^a-c] ,匹配‘brisket’,第一个匹配结果是’r’。 |
|
` | ` | 或者 |
数量限定符
符号 | 说明 |
---|---|
* |
匹配前面的子表达式零次或多次。等价于 {0,} 。要匹配 \* 字符,请使用 \* 。 |
+ |
匹配前面一个表达式 1 次或者多次。等价于 {1,} 。要匹配 \+ 字符,请使用 \+ 。 |
. |
(小数点)默认匹配除换行符之外的任何单个字符。 |
? |
如果紧跟在任何量词 * 、 + 、? 或 {} 的后面,将会使量词变为非贪婪(匹配尽量少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。要匹配? 字符,请使用 \? 。 |
{n} |
n 是一个正整数,匹配前一个字符串刚好连续出现 n 次。 |
{n,} |
n 是一个正整数,匹配前一个字符至少出现了 n 次。 |
{n,m} |
n 和 m 都是整数。匹配前面的字符至少 n 次,最多 m 次。如果 n 或者 m 的值是 0, 这个值被忽略。 |
预定义符
符号 | 说明 |
---|---|
\d |
匹配一个数字字符,等价于[0-9] |
\D |
匹配一个非数字字符,等价于[^0-9] |
\w |
匹配一个单字字符(字母、数字或者下划线)。等价于 [A-Za-z0-9_]。 |
\W |
匹配一个非单字字符。等价于 [^a-za-z0-9_]。 |
\s |
匹配一个空白字符,包括空格、制表符、换页符、换行符。等价于 [ \f\n\r\t\v]。 |
\S |
匹配任何非空白字符。等价于 [^\f\n\r\t\v]。 |
非打印字符
符号 | 说明 |
---|---|
\f |
匹配一个换页符。等价于 \x0c 和 \cL。 |
\n |
匹配一个换行符。等价于 \x0a 和 \cJ。 |
\r |
匹配一个回车符。等价于 \xOd 和\cM |
\t |
匹配一个制表符,等价于\x09 和\cL |
\v |
匹配一个垂直制表符,等价于\x0b 和\cK |
[\b] |
匹配一个退格 |
\b |
匹配一个词的边界,不包括边界。 /\bm/匹配’moon’中的 m /oo\b/匹配不到’moon’中的’oo’ |
\B |
匹配一个非单词边界 /y\B../匹配”possibly yesterday”中的’yes‘。 |
修饰符
var re=/pattern/flags
var re=new RegExp('pattern','flags')
修饰符 | 含义 | 描述 |
---|---|---|
i |
ignore - 不区分大小写 | 将匹配设置为不区分大小写 |
g |
global - 全局匹配 | 查找所有的匹配项 |
m |
multi line - 多行匹配 | 使边界字符 ^ 和 \$ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。 |
s |
特殊字符圆点. 中包含换行符\n |
默认情况下的圆点. 是匹配除换行符\n 之外的任何字符,加上s 修饰符之后, . 中包含换行符 \n 。 |
u |
使用 unicode 码的模式进行匹配 | |
y |
执行粘性搜索,匹配从目标字符串的当前位置开始 |
方法
exec
reg.exec(‘string’)
用于检索字符串中的正则表达式的匹配。返回一个匹配到的字符数组,否则返回 nulltest
reg.test(‘string’)
用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,match
‘string’.match(reg)
一个在字符串中执行查找匹配的 String 方法,它返回一个数组,在未匹配到时会返回 null。返回值
- 如果使用 g 标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。
- 如果未使用 g 标志,则仅返回第一个完整匹配及其相关的捕获组(Array)。 在这种情况下,返回的项目将具有如下所述的其他属性。
matchAll
str.matchAll(regexp)
一个在字符串中执行查找所有匹配的 String 方法,它返回一个迭代器search
string.search(reg)
一个在字符串中测试匹配的 String 方法,它返回匹配到的位置索引,或者在失败时返回-1。replace
str.replace(regexp|substr, newSubStr|function)
一个在字符串中执行查找匹配的 String 方法,并且使用替换字符串替换掉匹配到的子字符串。
替换日期格式,yy.zz/xxxx 替换成 xxxx-zz-yy 可以使用 正则的捕获组来实现
1 | const reg = /(\d{2}).(\d{2})\/(\d{4})/ |