正则表达式匹配所有除逗号之外的前导和尾随空格(包括逗号)

时间:2017-06-03 17:15:39

标签: javascript regex replace

我试图匹配一切,除了逗号和周围的任何空格。但是,我希望它能匹配单词之间的空格。这就是我到目前为止所做的:

/[^,\s][a-zA-Z0-9_ !@#$%^&*()]+/gi

它匹配除逗号和尾随空格之外的所有内容,但它包括前导空格。这是测试它regex101的链接。

我试图围绕关键术语包装span标签。这就是我希望最终结果:

<span>Some text</span>   ,    <span>Some more     text</span>

我目前正在使用

.replace(/([^,\s][a-zA-Z0-9_ !@#$%^&*()]+)/gi, "<span>$1</span>")

它会更新contenteditable div中的span标记。我使用它围绕关键术语使用CSS来放置气泡,并在每次输入后更新。任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:1)

正则表达式将是:

([\s\S]+?)(\s*,\s*|$)

然后在replace()方法内反向引用两个捕获组:

&#13;
&#13;
const regex = /([\s\S]+?)(\s*,\s*|$)/g;

const str = `uncased is a test   ,  vertical this is a tests
80000   ,     bertical
80000     ,       vertical
#303 cardio  endo,  kljafklj\$!asdfkj`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, '<span>$1</span>$2');

console.log(result);
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

这可以解决这个问题吗?

/((?:(\w|[-!@#$%^&*()])+( (\w|[-!@#$%^&*()]))*)+)/g

或者

/((?:(\w|[-!@#$%^&*()])+( {1,MAX_NUMBER_OF_SPACES}(\w|[-!@#$%^&*()]))*)+)/g