Javascript 正则表达式接受带或不带小数的15位数字

Javascript 正则表达式接受带或不带小数的15位数字,javascript,angular,regex,Javascript,Angular,Regex,我有一个已在系统中使用的正则表达式 /^(?![.,])(?!.*[.,]$)[0-9.,](?!.*[.,]{2}).*$/ 我需要验证是否接受15位数字。用户可以输入十进制,也可以不输入。 我无法理解如何处理这种情况 我试着像这样增加限制 /^(?![.,])(?!.*[.,]$)[0-9.,](?!.*[.,]{2}).{1,15}$/ 有人能帮助我理解如何处理十进制,并且仍然能够检查是否输入了15位最大长度。超过15位会引发错误,少于15位是可以接受的。列出的要求的基本答案(最多15

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

/^(?![.,])(?!.*[.,]$)[0-9.,](?!.*[.,]{2}).*$/
我需要验证是否接受15位数字。用户可以输入十进制,也可以不输入。 我无法理解如何处理这种情况

我试着像这样增加限制

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

有人能帮助我理解如何处理十进制,并且仍然能够检查是否输入了15位最大长度。超过15位会引发错误,少于15位是可以接受的。

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

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

将字符串的完整长度匹配两次:一次确保最多有15位数字(可能中间没有数字),另一次确保只有数字,最多只有一个小数点/逗号。

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

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

将字符串的全长匹配两次:一次,以确保最多有15位数字(可能中间有非数字),和一次,以确保您只有数字,最多只有一个小数点/逗号。

小数点出现在最开始或最结尾可以吗?它应该只出现一次吗?如果小数点在最前面或最后,则应该抛出错误。应该只有一个小数点。您是说最大长度为15位还是最大长度总共15个字符长度?还有,“只有一个小数点”是什么意思,可选小数点/逗号后是否只有一个数字?小数点是否可以显示在最开始或最结尾?是否只显示一次?如果小数点位于最前面或最后,则会引发错误。应该只有一个小数点。您是说最大长度为15位还是最大长度总共15个字符?另外,w“只有一个小数点”是什么意思?可选小数点/逗号后应该只有一个数字吗?为了让我更好地理解,哪个部分特别说明您正在对字符串进行两次不同的扫描?是否有理由在第一个分组周围需要括号:
(?=…$)
(?=…)
是一个正向前瞻,它确保以下内容应该匹配,但不推进位置(即,它是一个零宽度断言)。然后,前瞻之外的位再次从同一位置匹配(这次通常推进位置)。有关更多信息,请参阅。为了让我更好地理解,哪个部分特别指出您正在对字符串进行两次不同的扫描?是否有理由在第一个分组周围需要括号:
(?=…$)
(?=…)
是一种正向前瞻,它确保以下内容应该匹配,但不推进位置(即,它是一种零宽度断言)。然后,前瞻之外的位再次从同一位置匹配(这次通常推进位置)。有关更多信息,请参阅。