【发布时间】:2023-03-24 16:15:01
【问题描述】:
我正在尝试删除字符串中破折号周围的空格,但仅限于数字内:
10 - 89 - 90 应该变成10-89-90。
但是当在一个字符串中时,它们应该保留空格:
A - Z 应保持为A - Z。以及90 - older 应该保留90 - older。
所以只有当破折号两边都有数字时,才应该删除空格。
我试过了:
item = item.replace(/(\d) - (\d)/g, "$1-$2");
但什么也没发生。
编辑:我的破折号确实被 Excel 变成了破折号,但我接受了答案,因为它确实预料到了我很可能遇到的问题(破折号之间只有一位数字) .
【问题讨论】:
-
这很可能是因为您的空间是硬/非中断空间。或者你的破折号不是连字符,而是一些 en/em-dash 因为your code works。
-
@tevemadar 不需要。实际上,第二个
\d必须用前瞻包装以允许重叠数字匹配,如第四只鸟的答案。这里的问题是我们不知道 OP 有什么作为输入,或者空格不是常规空格,或者连字符/破折号。\s解决了空格问题。 -
@WiktorStribiżew,是的,毕竟匹配一个数字就足够了。但事实上,OP 的原始代码已经适用于该示例(替换了 ``` - ``` 序列),而帖子说它没有。 (在 SO 中发现了一个错误?我无法用周围的空格对破折号进行编码格式化)
标签: javascript regex