从字符串中删除所有字符的实例

4
我将尝试在jQuery/Javascript中从字符串中删除给定字符集£$€,.的所有实例。我使用replace函数,但它似乎只能删除单个字符的实例,而不能删除所有实例。
例如,考虑以下字符串:
1,500,00.00.$djdjd£10€10

我得到回复:

1500,0000.djdjd1010

正如您所见,它只会删除每个字符的一个实例。由于字符串中只有一个£,$,因此这些字符不受影响。

这是我到目前为止的代码:

function validatePriceRange(value, min, max) {

    var replacements = ["£", "$", "€", ",", "."];

    $.each(replacements, function (index, item) {
        value = value.replace(item, "");
    });

    var value = parseInt(value, 10);

    return value >= min && value <= max;
}

jsFiddle

有人能发现我做错了什么吗?

注:该内容为一个HTML代码块,无需翻译。
5个回答

11

replace 方法的第一个参数为字符串时,只会替换第一个匹配项,而使用带有标志 g 的正则表达式则将替换所有匹配项。

使用正则表达式还可以避免循环数组并在一次操作中完成:

value = value.replace(/£|\$|€|,|\./g,'');

太好了 - 感谢您对替换操作的解释。我无知地认为它的工作方式类似于 C# 中的 .Replace() 方法。 - DGibbs

1

我认为你不需要一个函数来实现它:

var validated = parseInt('1,500,00.00.$djdjd£10€10'.replace(/[£$€,.]/g,''), 10);
//=> 15000000
// or if you want the validated directly
var validated = function(min,max) {
                  var v = parseInt('1,500,00.00.$djdjd£10€10'
                                    .replace(/[£$€,.]/g,''), 10);
                  return v >= min && v <==max;
                }(1000, 200000); //=> false

如果您想在字符串中包含所有数字,则正则表达式应该有所不同:
var validated = function(min,max) {
                  var v = parseInt('1,500,00.00.$djdjd£10€10'
                                    .replace(/[^\d]/g,''), 10);
                  //                           ^ replace non numbers
                  // v now is 150000001010
                  return v >= min && v <==max;
                }(1000, 200000); //=> false

1
你只是在循环替换数组中的每个字符一次。但是,replace方法只会替换第一个符合条件的字符串

如果需要进行全部替换,请参考这里


1
耶,指向现有解决方案真是太棒了。我可能会考虑通过将ReplaceAll作为String的原型来扩展该解决方案。 - gillyspy

0
使用带有全局标志的正则表达式,它将搜索并替换所有实例。
var replacements = ["£", "\\$", "€", ",", "\\."];
$.each(replacements, function (index, item) {
    value = value.replace(new RegExp(item, "g"), '');
});

演示:Fiddle


0

如已在此处回答,您可以使用以下正则表达式将所有非字符和空格替换为空。

var value = "1,500,00.00.$djdjd£10€10"
value = value.replace(/[^\w\s]/gi, '')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接