首页 > 解决方案 > 正则表达式接受带或不带小数的 15 位数字

问题描述

我有一个已经在系统中使用的正则表达式

/^(?![.,])(?!.*[.,]$)[0-9.,](?!.*[.,]{2}).*$/

我需要验证相同的接受 15 位数字。用户可以输入小数,也可以不输入。我无法理解如何处理这种情况。

我尝试像这样添加限制

/^(?![.,])(?!.*[.,]$)[0-9.,](?!.*[.,]{2}).{1,15}$/

有人可以帮助我了解如何处理小数,并且仍然能够检查是否输入了 15 位数字作为最大长度。超过 15 位应该会引发错误,并且应该可以接受更少。

标签: javascriptangularregex

解决方案


您列出的要求的基本答案(最多 15 位数字,最多一位小数,如果适用,小数点前后至少一位数字)将是:

^(?=(?:\d\D*){1,15}$)\d+(?:[.,]\d+)?$

您匹配字符串的完整长度两次:一次以确保您最多有 15 位数字(可能散布非数字),一次以确保您只有数字,并且最多有一个小数点/逗号。


推荐阅读