由于某些原因,这两个正则表达式的行为相同:
"43\\gf..--.65".replace(/[^\d.-]/g, ""); // 43..--.65
"43\\gf..--.65".replace(/[^\d\.-]/g, ""); // 43..--.65
在第一个正则表达式中,我不会转义dot(.
),而在第二个正则表达式中,我会转义(\.
)。
有什么区别,为什么它们表现相同?
由于某些原因,这两个正则表达式的行为相同:
"43\\gf..--.65".replace(/[^\d.-]/g, ""); // 43..--.65
"43\\gf..--.65".replace(/[^\d\.-]/g, ""); // 43..--.65
在第一个正则表达式中,我不会转义dot(.
),而在第二个正则表达式中,我会转义(\.
)。
有什么区别,为什么它们表现相同?
Answers:
因为该点在字符类内部(方括号[]
)。
看一下http://www.regular-expressions.info/reference.html,它说(在char类部分下):
除^-] \以外的任何字符都将该字符添加到字符类的可能匹配项中。
-
)仅在范围中间时才需要转义?