为了把它放在上下文中,请考虑以下两个函数:
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,'');
};
第一个函数将输入限制为特定的字符集,第二个函数将省略输入中的任何字符或字符序列。正如您在第一个函数中的代码所见,它仅在将单个字符类传递给“正则表达式”参数时才会起作用,因为包含代码一次只检查一个字符。
考虑输入 string 12-34
,现在如果我将正则表达式传递'[0-9]'
给第一个函数和'[^0-9]'
第二个函数,我将得到与预期相同的输出:1234
但是,如果我在第二个函数中使用更高级的表达式,例如'[^0-9][^0-9]-'
,我会得到12-
. 但是如果我将多个字符类传递给第一个函数,它将返回一个空字符串。
我想知道是否有一种简单的方法(最好没有循环)来执行 ml_OmitChars 的逆操作,以便它们类似地工作?