必须包含小数点的数字的正则表达式
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-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
【讨论】:
非常感谢!这可以满足我的所有要求。以上是关于必须包含小数点的数字的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章