JavaScript.replace не заменяет все вхождения
Возможный дубликат:
Javascript multiple replace
Как заменить все вхождения "/" в строке с "_" в JavaScript?
В JavaScript "11.111.11".replace(".", "")
выводится "11111.11"
. Как это может быть?
Скриншот Firebug:
![Firebug Screenshot]()
Ответы
Ответ 1
Цитата из документ:
Чтобы выполнить глобальный поиск и заменить, включите переключатель g в регулярное выражение или если первый параметр является строкой, включите g в параметре flags. Примечание:Аргумент flags не работает в v8 Core (Chrome и Node.js) и будет удален из Firefox.
Итак, это должно быть:
"11.111.11".replace(/\./g, '');
Эта версия (на момент редактирования) работает в Firefox...
"11.111.11".replace('.', '', 'g');
... но, как отмечено на самой странице MDN, его поддержка скоро будет удалена.
Ответ 2
С регулярным выражением и флагом g
вы получили ожидаемый результат
"11.111.11".replace(/\./g, "")
ВАЖНО использовать регулярное выражение, потому что это:
"11.111.11".replace('.', '', 'g'); // dont' use it!!
не является стандартным
Ответ 3
Прежде всего, replace() - это функция javascript, а не функция jquery.
Приведенный выше код заменяет только первое вхождение ".". (не каждый случай). Чтобы заменить каждое вхождение строки в JavaScript, вы должны предоставить методу replace() регулярное выражение с глобальным модификатором в качестве первого параметра, например:
"11.111.11".replace(/\./g,'')