ES6-正则的扩展-dotAll 模式

来源:互联网 发布:金融数据分析导论 pdf 编辑:程序博客网 时间:2024/05/17 08:14

正则表达式中,点(.)是一个特殊字符,代表任意的单个字符,但是行终止符(line terminator character)除外。

以下四个字符属于“行终止符”

  U+000A 换行符(\n)

  U+000D 回车符(\r)

  U+2028 行分隔符(line separator)

  U+2029 段分隔符(paragraph separator)

/foo.bar/.test('foo\nbar')// false
上面代码中,因为 . 不匹配 \n ,所以正则表达式返回 false。
很多时候我们想要匹配任意单个字符,这里有一种变通的写法。

/foo[^]bar/.test('foo\nbar')// true
上面方案由于不太符合直觉,所以现在引入 /s 修饰符,使得 . 可以匹配任意单个字符。
/foo.bar/s.test('foo\nbar') // true
上面代码被称为 dotAll 模式,即点(dot)代表一切字符,所以正则表达式还引入了一个 dotAll 属性,返回一个布尔值,表示该正则表达式是否处在 dotAll 模式。
const re = /foo.bar/s;// 另一种写法// const re = new RegExp('foo.bar', 's');re.test('foo\nbar') // truere.dotAll // truere.flags // 's'
/s 修饰符和多行修饰符 /m 不冲突,两者一起使用的情况下, . 匹配所以字符,而 ^ 和 $ 匹配每一行的行首和行尾。

原创粉丝点击