Ответ 1
Вам необходимо установить флаг g, чтобы заменить его глобально:
date.replace(new RegExp("/", "g"), '')
// or
date.replace(/\//g, '')
В противном случае будет заменено только первое вхождение.
У меня есть это
var date = $('#Date').val();
это получит значение в текстовом поле, что будет выглядеть как
12/31/2009
Теперь я делаю это на нем
var id = 'c_' + date.replace("/", '');
и результат
c_1231/2009
Он пропускает последнее '/' Я не понимаю, почему.
Вам необходимо установить флаг g, чтобы заменить его глобально:
date.replace(new RegExp("/", "g"), '')
// or
date.replace(/\//g, '')
В противном случае будет заменено только первое вхождение.
В отличие от библиотеки классов С#/.NET(и большинства других разумных языков), когда вы передаете String
в качестве аргумента string-to-match методу string.replace
, он не заменяет строку, Он преобразует строку в RegExp
и выполняет подстановку регулярных выражений. Как объясняет Гумбо, для замены регулярного выражения требуется флаг g
lobal, который по умолчанию не включен, чтобы заменить все совпадения за один раз.
Если вам нужна реальная замена на основе строки - например, потому что строка соответствия является динамической и может содержать символы, которые имеют особое значение в regexen - идиома JavaScript для этого:
var id= 'c_'+date.split('/').join('');
Вы можете использовать:
String.prototype.replaceAll = function(search, replace) {
if (replace === undefined) {
return this.toString();
}
return this.split(search).join(replace);
}