必须包含小数点的数字的正则表达式

Posted

技术标签:

【中文标题】必须包含小数点的数字的正则表达式【英文标题】:RegEx for a number that must contain a decimal point 【发布时间】:2019-09-15 07:05:55 【问题描述】:

我正在尝试编写一个正则表达式来验证十进制数。

    数字必须包含小数点。 小数点右侧必须有一位 [0-9]。 小数点左侧最多可以有 5 位数字,但它们不能以零开头,除非它自己是零。

允许:

0.1(第一个数字后跟小数位只能为零) 10345.0(小数点左边最多5位,小数点右边必须有1位)

不允许:

0(无小数位) 10(无小数位)
    (小数点右边没有数字)
。 (小数点两边没有数字) .1(小数点左边没有数字)

这个正则表达式验证小数点前的内容

^(?:[1-9][0-9]0,4|0)$

这个正则表达式验证小数点后的内容

^[0-9]1+$

我只是不知道如何将两者结合起来以使小数位是强制性的。

我该如何解决这个问题?

【问题讨论】:

我想排除不必要的前导零(在我的原始帖子的第 3 点中提到),因此 01.1 无效。干杯。 【参考方案1】:

应该可以的

const r = /^(?:[1-9]\d0,4|0)\.\d+/

const arr = ['0', '1', '1.2', '1.', '1.123', '0123.1', '123.123', '1234.1', '12345.12345678', '123456.123', '0.12'];

arr.forEach((val) => 
  console.log(val, r.test(val));
)

【讨论】:

谢谢菲利克斯...唯一的问题是你的允许小数点后多于一位...可能是因为你在末尾有一个 + 而不是 $。干杯! 正确,错过了这条规则:]【参考方案2】:

This RegEx 可能会验证您的输入:

^(\d1,5\.\d1,)$

您可以简单地使用 $1 调用它。

【讨论】:

会匹配无效号码01.1 它也匹配小数点后一位以上的数字,但非常感谢您的回复:)【参考方案3】:

据我所知,这是可行的

^(?:[1-9]\d0,4|0)\.\d$

展开

 ^                             # BOS
 (?:
      [1-9] \d0,4                 # 1-5 digits, must not start with 0
   |                              # or,
      0                             # 0
 )
 \. \d                         # decimal point and 1 digit
 $                             # EOS

【讨论】:

非常感谢!这可以满足我的所有要求。

以上是关于必须包含小数点的数字的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

求JS的判断输入数字必须为正整数的正则表达式

求一个正则表达式只能输入数字小数点后两位和

正则表达式必须包含字母数字和特殊字符

js正则表达式 只能支持小数点到两位小数和纯数字 0.01-99999999(大于0)

判断字符串不能全部为数字的的正则表达式怎么写?

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