Как заменить все символы в строке, используя JavaScript для этого конкретного случая: заменить.от _ - PullRequest
8 голосов
/ 23 июня 2010

Следующее утверждение в JavaScript работает должным образом:

var s1 = s2.replace(/ /gi, '_'); //replace all spaces by the character _

Однако, чтобы заменить все вхождения символа.по символу _ у меня есть:

var s1 = s2.replace(/./gi, '_');

Но в результате получается строка, полностью заполненная символом _

Почему и как заменить._ используя JavaScript?

Ответы [ 4 ]

25 голосов
/ 23 июня 2010

.символ в регулярном выражении будет соответствовать всем.Вы должны избежать этого, так как вы хотите буквальный символ периода:

6 голосов
/ 23 июня 2010

вам нужно экранировать точку, поскольку это регулярный символ в регулярном выражении

s2.replace(/\./g, '_');

Обратите внимание, что точка не требует экранирования в классах символов, поэтому, если вы хотите заменить точки и пробелы символами подчеркивания вОдин раз, вы можете сделать:

s2.replace(/[. ]/g, '_');

Использование флага i здесь не имеет значения, как и в вашем первом регулярном выражении.

4 голосов
/ 23 июня 2010

Вы также можете использовать строки вместо регулярных выражений.

var s1 = s2.replace ('.', '_', 'gi')
1 голос
/ 23 июня 2010

Есть и то, что тоже хорошо работает:

var s1 = s2.split(".").join("_"); // Replace . by _ //
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...