在JavaScript中,用于从字符串中删除多个逗号和空格的正则表达式。

24

我有一个字符串,如下所示:

var str=" , this,  is a ,,, test string , , to find regex,,in js.  , ";

字符串开头、中间和结尾都有多个带逗号的空格。我需要将此字符串放入。

var str="this is a test string to find regex in js.";

我在论坛上找到了很多正则表达式,可以单独去除空格和逗号,但我无法将它们结合起来去除两者。

如果可能,请解释一下正则表达式的语法。

提前感谢。


请问您是否查看过MDN的正则表达式页面或者http://www.regular-expressions.info/,它们可以对正则表达式语法进行解释。 - nnnnnn
在另一个字符串中,我需要将多个空格替换为单个空格,并用单个逗号替换多个逗号,例如:var str=", this is to replace ,, multiple comma and space. ,"; 我需要从字符串的开头和结尾替换逗号,将多个空格替换为一个空格,并将字符串中的多个逗号替换为单个逗号。因此,结果字符串为var result_str="this is to replace ,multiple comma and space"。 - Dashrath
@Dashrath,你能把那个放到你的问题里吗?还有,什么情况下逗号不应该被完全删除? - Jerry
4个回答

44

您只需将每个空格和逗号替换为一个空格,然后修剪掉那些尾随的空格:

var str=" , this,  is a ,,, test string , , to find regex,,in js.  , ";
res = str.replace(/[, ]+/g, " ").trim();

jsfiddle演示


1
谢谢你的好回答,但是 str.replace(/[, ]+/g, " ").trim() 和没有 trim() 的 str.replace(/[, ]+/g, " ") 之间的真正区别是什么?我刚刚检查了一下,结果是相同的(或者我可能在哪里弄错了?) - Nikolay Talanov
3
@NikolayTalanov,在开头和结尾的空格,如果你有 ****hello***,它最终会变成 *hello*。使用 trim() 方法可消除此问题。在这里,为了清晰起见,使用 * 代表空格。 - Lloyd
@Lloyd 没错 :) - Jerry

5
你可以使用正则表达式来完成这个任务。
/[,\s]+|[,\s]+/g

var str= "your string here";
//this will be new string after replace
str = str.replace(/[,\s]+|[,\s]+/g, 'your string here');

正则表达式解释及演示


1
你应该在regex101上使用replace函数 :) - Jerry

4
尝试像这样做:

试试类似以下的方法:

var new_string = old_string.replace(/[, ]+/g,' ').trim();

正则表达式是[, ]+,如果我们将其分解,\s表示任何空白字符,,表示逗号字面量。 []是一个字符集(类似于数组),+表示一个或多个匹配项。
我们在末尾加入/g,以便进行全局搜索和替换,否则它只会执行一次匹配。

这将产生结果为new_string="thisisteststringtofindregexinjs"; - Dashrath
糟糕,我的错,我现在已经修复了。 - Lloyd
它只是将逗号替换为空格,从而生成一个字符串,其中单词之间有多个空格。 - Butt4cak3

1

您应该能够使用

str.replace(/,/g," ");

'g'是关键,您可能需要使用[,]


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