Escape dot в диапазоне регулярных выражений
по какой-то причине эти два регулярных выражения действуют одинаково:
"43gf..--.65".replace(/[^d.-]/g, ""); // 43..--.65
"43gf..--.65".replace(/[^d.-]/g, ""); // 43..--.65
В первом регулярном выражении я не избегаю точки (.
) в то время как во втором регулярном выражении я делаю(.
).
каковы различия и почему они действуют так же?
4 ответа:
потому что точка находится внутри символьного класса (квадратные скобки
[]
).взгляните на http://www.regular-expressions.info/reference.html, он говорит (в разделе класса char):
любой символ, кроме ^ -] \ добавить этот символ к возможным совпадениям для класса символов.
Если вы используете JavaScript для проверки вашего регулярного выражения, попробуйте
\.
вместо\.
.Он действует таким же образом, потому что JS удаляет первую обратную косую черту.
On этой странице, Я вижу, что:
"помните, что точка не является метасимволом внутри класса символов, поэтому нам не нужно избегать ее с обратной косой чертой."
поэтому я думаю, что побег из него не нужен...