【问题标题】:REGEX insert character every n-times starting at the end of string [duplicate]REGEX从字符串末尾开始每n次插入字符[重复]
【发布时间】:2015-08-12 13:23:40
【问题描述】:

我对正则表达式不是很流利,但我有这个序列: /(.{3})/g 据我所知,这将匹配从字符串开头开始的每 3 个字符。 如何从字符串的末尾开始并插入“。” (句号)他们之间?

额外信息:用户将输入数字,我希望它插入一个“。”每3个数字之后。这是我为特定项目制作的定制面具。

谢谢

【问题讨论】:

  • 1) 显示了一些预期输入和相应输出的示例。 2)展示你尝试过的东西。 3)在你想“开始”的“结束”之间插入一些东西是什么意思。
  • “我的正则表达式不是很流利”>> Regular Expression Pocket Reference
  • 很抱歉之前没有提供示例,但@Cranio 已经对其进行了修改。感谢您的链接。

标签: javascript regex


【解决方案1】:

尝试类似:

numberString.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.")

只要确定 numberString 确实是一个字符串,或者用.toString() 转换它。

解释: 这非常棘手;它将匹配在一组三位数 \d{3} 之前出现的每个数字 (\d) 或该组重复多次 (\d{3])+ (所以每三的倍数)后面没有另一个数字 !\d

它使用 positive lookahead (?=) 和 negative lookahead (?!) 来匹配或排除部分字符串而不将它们包含在匹配中结果。

然后它将第一个匹配组(数字)替换为自身(使用 反向引用$1),后跟一个点。

【讨论】:

  • @WashingtonGuedes 更新了我的答案
  • 很抱歉之前没有提供示例。但是为了让它与我的代码一起工作,我不得不稍微改变一下:` /(\d{3})(?=(\d{1})+(?!\d))/g, "$1." ` 它工作得很好。也感谢所有其他回复的解释!
猜你喜欢
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 2011-08-27
  • 2014-05-14
相关资源
最近更新 更多