首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript用数字删除破折号周围的空格,但不删除字符串

问Javascript用数字删除破折号周围的空格,但不删除字符串
EN

Stack Overflow用户
提问于 2021-09-06 21:25:50
回答 1查看 203关注 0票数 0

我试图在字符串中删除虚线周围的空格,但只有在数字中:

10 - 89 - 90应该变成10-89-90。

但是,当在字符串中时,它们应该保留空格:

A - Z应该保持为A - Z。和90 - older一样,90 - older也应该留下来。

所以只有当破折号两边都有数字的时候,空格才会被移除。

我试过这个:

item = item.replace(/(\d) - (\d)/g, "$1-$2");

但什么都没发生。

编辑:我的破折号确实被Excel变成了em破折号,但我接受了答案,因为它确实预见到了一个我很可能遇到的问题(在破折号之间只有一个数字)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-06 21:27:25

使用(\d) - (\d)将适用于10 - 89 - 90,但它不适用于10 - 8 - 9,因为第二个\d中的个位数已经匹配。

在每个数字的左边和右边必须至少有一个空格,这也不能与10 - 89 -90中的最后一个空格相匹配。

您可以使用

代码语言:javascript
复制
\b(\d+)\s*-\s*(?=\d+\b)
  • \b(\d+)字边界,捕获1+数字
  • \s*-\s*匹配可选空格字符之间的连字符
  • (?=\d+\b)正前瞻,断言1+数字,后面跟着单词边界

而代之以

代码语言:javascript
复制
$1-

Regex演示

​

代码语言:javascript
复制
[
  "0 - 89 - 90",
  "90 - older"
].forEach(
  item => console.log(item.replace(/\b(\d+)\s*-\s*(?=\d)/g, "$1-"))
)

​

当支持后视中的量词时:

​

代码语言:javascript
复制
[
  "0 - 89 - 90",
  "90 - older"
].forEach(
  item => console.log(item.replace(/(?<=\b\d+)\s*-\s*(?=\d+\b)/g, "-"))
)

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69080412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档