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

Javascript 从字符串中删除字符的所有实例,javascript,jquery,string,replace,Javascript,Jquery,String,Replace,我正试图从jQuery/Javascript中的字符串中删除给定字符集的所有实例。我正在使用该函数,但是这似乎只删除角色的一个实例,而不是全部实例 例如考虑字符串: 1,500,00.00.$djdjd£10€10 var validated = function(min,max) { var v = parseInt('1,500,00.00.$djdjd£10€10' .replac

我正试图从jQuery/Javascript中的字符串中删除给定字符集的所有实例。我正在使用该函数,但是这似乎只删除角色的一个实例,而不是全部实例

例如考虑字符串:

1,500,00.00.$djdjd£10€10
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
我回来了:

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;
}
函数validatePriceRange(值、最小值、最大值){
风险值替换=[“£”、“$”、“€”、“,”、“,”;
$。每个(替换、功能(索引、项目){
值=值。替换(项目“”);
});
var值=parseInt(值,10);

返回值>=min&&value使用带有全局标志的正则表达式,它将搜索和替换所有实例

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

演示:

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

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

使用字符串作为第一个参数调用,只进行一次替换,而使用带有标志
g
的正则表达式替换所有出现的情况

使用正则表达式,还可以避免在数组上循环,并一次性完成:

value = value.replace(/£|\$|€|,|\./g,'');
使用字符串作为第一个参数调用时,只进行一次替换,而使用带有标志
g
的正则表达式替换所有出现的情况

使用正则表达式,还可以避免在数组上循环,并一次性完成:

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

您只能在替换数组中循环一次,每次替换特定角色时都要进行替换。 但是,replace只替换给定字符串的第一次出现

有关“全部替换”方法,请参见


您只能在替换数组中循环一次,每次替换特定角色时都要进行替换。 但是,replace只替换给定字符串的第一次出现

有关“全部替换”方法,请参见


我不认为你需要一个函数:

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=parseInt('1500,00.00.$djdjd£10€10'。替换(/[£€,.]/g',),10);
//=> 15000000
//或者如果您希望直接验证
var验证=功能(最小值、最大值){
var v=parseInt('1500,00.00.$DJD£10欧元10'
.替换(/[£€,.]/g,”),10);
返回v>=min&&v false
如果要在字符串中包含所有数字,则正则表达式应不同:

1,500,00.00.$djdjd£10€10
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
var validated=函数(最小值、最大值){
var v=parseInt('1500,00.00.$DJD£10欧元10'
.替换(/[^\d]/g',),10);
//^替换非数字
//v现在是15000001010
返回v>=min&&v false

我认为您不需要函数:

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=parseInt('1500,00.00.$djdjd£10€10'。替换(/[£€,.]/g',),10);
//=> 15000000
//或者如果您希望直接验证
var验证=功能(最小值、最大值){
var v=parseInt('1500,00.00.$DJD£10欧元10'
.替换(/[£€,.]/g,”),10);
返回v>=min&&v false
如果要在字符串中包含所有数字,则正则表达式应不同:

1,500,00.00.$djdjd£10€10
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
var validated=函数(最小值、最大值){
var v=parseInt('1500,00.00.$DJD£10欧元10'
.替换(/[^\d]/g',),10);
//^替换非数字
//v现在是15000001010
返回v>=min&&v false
如前所述,您可以使用以下正则表达式将所有非字符和空格替换为空

var value = "1,500,00.00.$djdjd£10€10"
value = value.replace(/[^\w\s]/gi, '')
如前所述,您可以使用以下正则表达式将所有非字符和空格替换为空

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

完美-感谢您对替换工作原理的解释。我无知地认为它的工作原理与
replace()
C.
中的工作原理类似。完美-感谢您对替换工作原理的解释。我无知地认为它的工作原理与
replace()类似在 C< > YAY中,指向现有的解决方案ROCK。我可以考虑通过将Stry.yAy的原型替换为现有的解决方案ROCKE来扩展该解决方案。我可以考虑通过使RetryString原型为字符串来扩展该解决方案。