gpt4 book ai didi

javascript - 如何在 JavaScript 中将字符串限制为一组特定的字符?

转载 作者:行者123 更新时间:2023-11-30 06:07:02 25 4
gpt4 key购买 nike

为了说明这一点,请考虑以下 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 的逆操作,以便它们的工作方式相似?

最佳答案

匹配每个字符很简单(但速度很慢),您会展示它是如何工作的。您现在想要的是匹配一个模式并连接所有匹配项。这是这样做的:

ml_RestrictToChars = function(input,regex) {
var rx = new RegExp (regex, 'g');
var matches = input.match (rx);
return matches.join ('');
};

第一行使它成为一个“全局”正则表达式,它改变了 match() 的行为。第二行返回数组中的所有匹配项,最后一行将它们连接成一个字符串并返回。

关于javascript - 如何在 JavaScript 中将字符串限制为一组特定的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3671283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com