用可选的小数部分验证逗号分隔的数字

Regex to validate comma-separated numbers with optional fractional parts

本文关键字:分隔 数字 验证 小数部      更新时间:2023-09-26

使用JavaScript,我只需要接受数字和逗号。

我使用的正则表达式模式如下

 var pattern = /^[-+]?[0-9]+('.[0-9]+)?$/;

我如何在上述模式中接受逗号,使32003,2003,200.00等值有效?

有一些类似的问题只是部分地处理了这个问题:

  • 带逗号分隔符的数字的正则表达式验证(仅限没有小数部分的整数)
  • 十进制数字正则表达式,其中小数后的数字可选(无逗号分隔,小数部分限制为1位)
  • Javascript函数需要允许数字、点和逗号(点、逗号和数字可以任意顺序匹配)

使用以下正则表达式:

^[-+]?(?:[0-9]+,)*[0-9]+(?:'.[0-9]+)?$

参见regex demo

这里的基本变化是添加了(?:[0-9]+,)*子模式,该模式匹配:
  • [0-9]+ - 1位或更多数字
  • , -逗号

0次或更多次(感谢*量词)。

我还使用了非捕获组,以便regex输出"更干净"。

如果您需要检查号码中是否有3位分组,请使用

^[-+]?[0-9]+(?:,[0-9]{3})*(?:'.[0-9]+)?$

查看另一个演示

这里,(?:,[0-9]{3})*匹配0个或多个逗号和3位子字符串([0-9]{3})的序列。

{3}是一个限制性限定词,与前面的子模式恰好匹配3次。
相关文章: