在正则expression式范围内转义点
由于某种原因,这两个正则expression式的作用是一样的:
"43\\gf..--.65".replace(/[^\d.-]/g, ""); // 43..--.65 "43\\gf..--.65".replace(/[^\d\.-]/g, ""); // 43..--.65
演示
在第一个正则expression式中,我不会在第二个正则expression式( \.
)中转义点( \.
)。
有什么区别,为什么他们采取相同的行为?
因为点在字符类(方括号[]
)内。
看看http://www.regular-expressions.info/reference.html ,它说(在字符类部分):
除^ – ]之外的任何字符都会将该字符添加到字符类的可能匹配中。
点运算符.
不需要在字符类[]
转义。
如果您使用JavaScript来testing您的正则expression式,请尝试\\.
而不是\.
。
它的行为相同,因为JS删除了第一个反斜杠。
在这个网页上 ,我看到:
“请记住,点不是字符类中的元字符,所以我们不需要用反斜杠来转义它。
所以我想逃避它是没有必要的