Вопрос по javascript, regex, replace – Точка выхода в диапазоне регулярных выражений

58

По некоторым причинам эти два регулярных выражения действуют одинаково:

<code>"43\\gf..--.65".replace(/[^\d.-]/g, "");​  // 43..--.65
"43\\gf..--.65".replace(/[^\d\.-]/g, "");​  // 43..--.65
</code>

демонстрация

В первом регулярном выражении я не убегаю от точки (.) в то время как во втором регулярном выражении я делаю (\.).

В чем различия и почему они действуют одинаково?

Ваш Ответ

4   ответа
51

[]).

Взгляни наhttp://www.regular-expressions.info/reference.html, он говорит (в разделе класса char):

Any character except ^-]\ add that character to the possible matches for the character class.

и минус (-) необходимо экранировать, только если он находится в середине диапазона? gdoron
или непосредственно перед закрывающей скобкой, или вы можете избежать его с косой чертой
Если вы хотите использовать дефис, добавьте его сразу после открытия квадратной скобки, например, [A-Z]. В противном случае дефис указывает диапазон. Это работает в вашем случае, вероятно, только потому, что вы не указываете диапазон в регулярном выражении, но я предлагаю вам следовать этой ссылке, если вы добавите диапазон позже.
21

попробуйте\\. вместо\..

Он действует так же, потому что JS удаляет первую обратную косую черту.

5

эта веб-страница, Я вижу это:

& quot; Помните, что точка не является метасимволом внутри класса символов, поэтому нам не нужно экранировать ее обратной косой чертой. & quot;

Так что я думаю, что убегать от него нет необходимости ...

88

. не нужно экранировать внутри класса персонажа[].

Похожие вопросы