我试图匹配一切,除了逗号和周围的任何空格。但是,我希望它能匹配单词之间的空格。这就是我到目前为止所做的:
/[^,\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来放置气泡,并在每次输入后更新。任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
正则表达式将是:
([\s\S]+?)(\s*,\s*|$)
然后在replace()
方法内反向引用两个捕获组:
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;
答案 1 :(得分:-1)
这可以解决这个问题吗?
/((?:(\w|[-!@#$%^&*()])+( (\w|[-!@#$%^&*()]))*)+)/g
或者
/((?:(\w|[-!@#$%^&*()])+( {1,MAX_NUMBER_OF_SPACES}(\w|[-!@#$%^&*()]))*)+)/g