这两个正则表达式的作用相同:
var str = "43gf\\..--.65";
console.log(str.replace(/[^\d.-]/g, ""));
console.log(str.replace(/[^\d\.-]/g, ""));
.
),而在第二个正则表达式中我转义了它(\.
)。有什么区别?为什么结果是相同的?
这两个正则表达式的作用相同:
var str = "43gf\\..--.65";
console.log(str.replace(/[^\d.-]/g, ""));
console.log(str.replace(/[^\d\.-]/g, ""));
.
),而在第二个正则表达式中我转义了它(\.
)。在字符类[]
中,点运算符.
无需转义。
由于点号在字符类中(方括号[]
内),所以它代表匹配除换行符以外的任何单个字符。
请看http://www.regular-expressions.info/reference.html,在字符类一节中写道:
除了^-]之外的任何字符都可以作为字符类的可能匹配项。
如果您使用JavaScript测试正则表达式,请尝试使用\\.
而不是\.
。
这样做的效果是相同的,因为JS会删除第一个反斜杠。
-
)位于范围的中间,则只需要对其进行转义。 - gdoron