在 ES9 中,正则表达式新增了一个特殊的标志:s
,它开启了 dotAll 模式。在 dotAll 模式下,点号 .
可以匹配任何字符,包括换行符 \n。
dotAll 模式的语法
在正则表达式中,我们可以使用 /
符号来定义一个正则表达式。在最后一个 /
后,可以使用一些特殊的标志来追加一些操作符的行为。
dotAll 模式可以通过在正则表达式的末尾添加一个 s
标志来启用,如下所示:
const reg = /regex/s;
使用 dotAll 模式匹配任何字符
使用 .
符号可以匹配除了换行符 \n
外的任何字符。在 dotAll 模式下,换行符也会被匹配。
下面是一个使用 dotAll 模式的例子:
const str = `foo bar`; const reg = /foo.bar/s; console.log(reg.test(str)); // true
在上面的代码中,使用了一个正则表达式 foo.bar/s
来匹配 foo
和 bar
之间的任何字符,包括换行符。运行上述代码,输出为 true
,表示字符串 foo\nbar
匹配到了正则表达式 foo.bar/s
。
总结
使用 dotAll 模式,我们可以更方便地匹配包含换行符的字符串。然而,由于点号 .
可以匹配任何字符,包括像 @#$%^&*
等特殊字符,因此我们需要更加谨慎地构造正则表达式,以免出现意外的匹配结果。
希望本文对你有所帮助,也希望你可以充分利用 dotAll 模式,让你的正则表达式更加强大。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6467563e968c7c53b07bad09