Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换字符串值和边界空间(如果存在)_Javascript_Regex_Replace - Fatal编程技术网

Javascript 替换字符串值和边界空间(如果存在)

Javascript 替换字符串值和边界空间(如果存在),javascript,regex,replace,Javascript,Regex,Replace,我有一根绳子,正试图找到更好的方法 替换(边界空间(如果存在) 同时还替换了不带 进行多模块传递(即调用,trim\u multispace和trim\u result) 我不确定我是否理解正确,但是这个正则表达式按照您指定的方式工作 strVals.replace(new RegExp(replaceVal, 'g'), '') .replace(/ +/g, ' ').replace(/^\s+|\s+$/g, ''); 我不确定我是否理解正确,但是这个正则表达式按照您指定的

我有一根绳子,正试图找到更好的方法 替换(边界空间(如果存在)

同时还替换了不带 进行多模块传递(即调用,
trim\u multispace
trim\u result


我不确定我是否理解正确,但是这个正则表达式按照您指定的方式工作

strVals.replace(new RegExp(replaceVal, 'g'), '')
       .replace(/ +/g, ' ').replace(/^\s+|\s+$/g, '');

我不确定我是否理解正确,但是这个正则表达式按照您指定的方式工作

strVals.replace(new RegExp(replaceVal, 'g'), '')
       .replace(/ +/g, ' ').replace(/^\s+|\s+$/g, '');

以下操作几乎只需一步,首先用一个空格替换值和任何周围的空白,然后修剪结果:

var replacedVal = strVals.replace(new RegExp("\\s*"+replaceVal+"\\s*", ""), " ").trim();

以下操作几乎只需一步,首先用一个空格替换值和任何周围的空白,然后修剪结果:

var replacedVal = strVals.replace(new RegExp("\\s*"+replaceVal+"\\s*", ""), " ").trim();

这不会将字符串中任意位置的多个空格减少为单个空格。另一件事是
trim
函数仅在Javascript 1.8.1中可用。根据问题,这不是一个要求。OP只提到要替换的值周围的边界空间,尽管原始代码也会产生删除所有多个空间的副作用。这不会将字符串中任意位置的多个空间减少为单个空间。另一件事是
trim
函数仅在Javascript 1.8.1中可用。根据问题,这不是一个要求。OP只提到要替换的值周围的边界空间,尽管原始代码也会有删除所有多个空间的副作用。谢谢!Narendra,你为什么要编辑你的答案?原始答案运行得很好?@david I在
RegExp
构造函数中添加了一个
g
标志,对
replaceVal
进行全局替换。也就是说,如果在字符串中的任意位置多次找到
replaceVal
,则所有出现的内容都将被替换。我认为这会适合您的情况。只是想让您知道,新附加的全局标志会导致您的解决方案在我的案例中失败,因为它将替换
replaceVal
的任何出现,例如
a b c d e f g hc
c
将从
hc
@david中删除。如果单独出现,是否需要替换多次出现的“c”?例如,您是否希望将
a b c d c e c
缩减为
a b d e
。如果是这样,请让我知道,我将根据向上述正则表达式添加边界条件来修改正则表达式。它看起来像新的RegExp('\\b'+replaceVal+'\\b',g')。如果只希望替换第一次出现的
replaceVal
,则使用此
新RegExp('\\b'+replaceVal+'\\b','')
。让我知道在任何情况下,我会相应地更新答案。谢谢!Narendra,你为什么要编辑你的答案?原始答案运行得很好?@david I在
RegExp
构造函数中添加了一个
g
标志,对
replaceVal
进行全局替换。也就是说,如果在字符串中的任意位置多次找到
replaceVal
,则所有出现的内容都将被替换。我认为这会适合您的情况。只是想让您知道,新附加的全局标志会导致您的解决方案在我的案例中失败,因为它将替换
replaceVal
的任何出现,例如
a b c d e f g hc
c
将从
hc
@david中删除。如果单独出现,是否需要替换多次出现的“c”?例如,您是否希望将
a b c d c e c
缩减为
a b d e
。如果是这样,请让我知道,我将根据向上述正则表达式添加边界条件来修改正则表达式。它看起来像新的RegExp('\\b'+replaceVal+'\\b',g')。如果只希望替换第一次出现的
replaceVal
,则使用此
新RegExp('\\b'+replaceVal+'\\b','')
。让我知道在任何情况下,我会相应地更新答案。