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

时间:2014-07-24 11:24:13

标签: javascript jquery string replace

我试图从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

有人能发现我做错了吗?

5 个答案:

答案 0 :(得分:6)

使用字符串作为第一个参数调用的

replace只进行一次替换,而使用带有标记g的正则表达式替换所有出现次数。

使用正则表达式,您还可以避免在数组上循环并在一次传递中执行:

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

答案 1 :(得分:1)

您只需在替换阵列中骑行一次,并在每次更换特定角色时进行更换。 但替换只是替换给定字符串的第一次出现

  

对于替换所有方法,请查看here

答案 2 :(得分: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

答案 3 :(得分:0)

使用带有全局标志的正则表达式,它将搜索并替换所有实例

var replacements = ["£", "\\$", "€", ",", "\\."];
$.each(replacements, function (index, item) {
    value = value.replace(new RegExp(item, "g"), '');
});

演示:Fiddle

答案 4 :(得分:0)

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

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