在逗号或空格上匹配正则表达式,但不能同时匹配两者

时间:2017-02-22 19:51:05

标签: javascript regex

我需要一个用逗号和空格替换逗号和空格的正则表达式,但如果它已经是一个逗号和一个空格,那就不管它了。

示例:

44,55 90应该变成44,55,90

但是,44,55,90再次输入时应该保持不变。

我最初尝试/[\s,]/g但它当然用逗号和空格替换任何逗号或空格,因此44,55,90变为44,55,90

3 个答案:

答案 0 :(得分:2)

答案非常简单/ ,?|,/g
或者,如果您想在逗号/ *,?| /g之前删除任意数量的空白区域 或者,如果你想要疯狂,请使用/\s*,\s*|\s+/g,这将取代之前和之后的任何额外间距,并做好所有好的stuf为更加错误。

答案 1 :(得分:0)

这将适用于测试字符串,假设您要使用数字,逗号和空格修复字符串,而不是其他字符组合。

搜索:

\d(,)\d|\d([ ]{1,},[ ]{0,})\d|\d([ ]{1,})\d

用逗号,和空格替换捕获组1。

应该使用量词检查多个空格来处理任何实际或潜在的空白区域。

Test string with 6 matches

44,55 90 ,44 , 55 , 90 , 1234 ,

答案 2 :(得分:0)

你可以采用另一种方式,使用否定的字符类替换所有你想要的数字:

'999 123,098b7b7b7b7b,,,123^&*()43'.replace(/[^\d]+/g,', ');
//"999, 123, 098, 7, 7, 7, 7, 123, 43"