Чтобы поместить это в контекст, рассмотрим следующие 2 функции:
ml_RestrictToChars = function(input,regex) {
var result = '';var c = '';
var rx = new RegExp(regex);
for (var i = 0; i < input.length; i++) {
c = input.charAt(i);
if (rx.test(c)) {
result += c;
}
}
return result;
};
ml_OmitChars = function(input,regex) {
var rx = new RegExp(regex,'g');
return input.replace(rx,'');
};
Первая функция будет ограничивать ввод определенным набором символов, вторая пропустит любой символ или последовательность символов из ввода.,Как видно из кода в первой функции, он будет функционировать только в том случае, если в аргумент 'regex' передается один символьный класс, поскольку код включения проверяет только символы по одному за раз.
Рассмотримвходная строка 12-34
, прямо сейчас, если я передам регулярное выражение '[0-9]'
первой функции и '[^0-9]'
второй функции, я получу такой же вывод, как и ожидалось: 1234
ОднакоЕсли я использую более сложное выражение во второй функции, например '[^0-9][^0-9]-'
, я получу вывод 12-
.Но если я передам более чем один символьный класс первой функции, она вернет пустую строку.
Меня интересует, есть ли простой способ (желательно без зацикливания) сделать обращение к ml_OmitChars, чтобы ониработать аналогично?