ES6-正则的扩展-dotAll 模式

正则表达式中,点(.)是一个特殊字符,代表任意的单个字符,但是行终止符(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') // true
re.dotAll // true
re.flags // 's'

/s 修饰符和多行修饰符 /m 不冲突,两者一起使用的情况下, . 匹配所以字符,而 ^ 和 $ 匹配每一行的行首和行尾。
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值