正则表达式验证小数前后的数字,不包括逗号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式验证小数前后的数字,不包括逗号相关的知识,希望对你有一定的参考价值。

我试图验证之前的13位数的十进制数和不包括逗号的点之后的4位数,即逗号不应计为数字。

有效案例

1,234,567,890,123.1234

1234567890123.1234

123456789012.1234

1234567890123.123

12345.123

1.2

0

在有效案例中

12345abc.23 // string or special characters  not allowed

1,234,567,890,1231.1234

1,234,567,890,123.12341

12345678901231.1234

1234567890123.12341

目前正则表达

^[0-9]1,13(\.[0-9]0,4)?$

目前的Regex将逗号计为数字。

任何帮助都会很棒。

答案

在匹配点之前,您可以使用负前瞻来断言右边的内容不是数字的14倍:

^(?!(?:[^.\s\d]*\d)14)-?\d+(?:,\d1,3)*(?:\.\d1,4)?$

说明

  • ^字符串的开头
  • -?可选连字符
  • (?!否定前瞻,断言以下不是 (?:[^.\s\d]*\d)14匹配不是数字,空白字符或点14次
  • )关闭前瞻
  • \d+匹配1+位数
  • (?:,\d1,3)*匹配逗号,1-3位数,重复0次以上(或使用\d+
  • (?:\.\d1,3)?可选部分,匹配点和1-4位数
  • $字符串的结尾

Regex demo

另一答案

您可以指定可选的计数,Like

^[0-9]0,1([,])?[0-9]0,3([,])?[0-9]0,3([,])?[0-9]1,3(\.[0-9]0,3)?$

以上是关于正则表达式验证小数前后的数字,不包括逗号的主要内容,如果未能解决你的问题,请参考以下文章

具有数字长度限制的数字的正则表达式,包括小数[关闭]

正则表达式将数字转换为逗号分隔的数字,可选两位小数

正则表达式匹配逗号分隔的数字与可选的小数部分

0到100(包括小数点,0和100)正则表达式怎么样写!急急。。 例如:80.6

正则表达式 验证数字格式 非负数 小数点后保留两位 数字正则 double正则

正则表达式验证文本框只能输入数字和小数点