Javascript RegEx如何制作:;字1--字2”;至“;字1--字2”;

Javascript RegEx how to make:"word1—word2" to"word1 — word2"

本文关键字:1--字 何制作 RegEx Javascript      更新时间:2023-09-26

我有一个句子,里面有短划线,两边没有空格。我想插入空格,但前提是没有空格(我不想将空格加倍(。

"word1—word2" to "word1 — word2"

但不是:

"word1 — word2" to "word1  —  word2"

我想我可以点上这个:

text.replace(/—/g, " — ").replace(/  —  /g, " — ");

但我想知道是否有更简单的方法来实现这个目标。

text.replace(/([^ ])-([^ ])/g, "$1 - $2");

这就行了。

转义码'b是"单词边界"的零宽度断言。通过匹配'b—'b,只有当破折号的两边都有一个"单词"字符时,才能匹配破折号。

text.replace(/'b—'b/g, " — ");

因为断言的宽度为零,所以不需要包含组,这简化了正则表达式。

text.replace(/(^|[^ ])-([^ ]|$)/g, "$1 - $2");

应该这样做。

....replace(/ — /g, " — ")将不起作用,因为与"foo- bar"一样,当短划线的一侧只有空格时,它将使空格加倍。

text = text.replace(/'s*—'s*/g, " — ");

给定一个已经形成良好的字符串,它会用一个空格替换一个空格,但这不会有任何影响。如果没有空格、太多空格或错误的空格,它将被规范化为一个空格。