如何使这个正则表达式也接受小数

Posted

技术标签:

【中文标题】如何使这个正则表达式也接受小数【英文标题】:How to make this regex accept decimals also 【发布时间】:2019-06-24 04:47:10 【问题描述】:

我有一个像这样的正则表达式

/^[0-9]*\s*kg\s*[0-9]*$/

这接受像100 kg100kg 这样的字符串。我想让它也接受100.1kg100.1 kg10,20 kg 等等(点和小数都应该接受)。如何更改当前的正则表达式,以便我提到的那些数字也测试为真?我见过这个支持数字和小数的正则表达式,但我不确定如何将它与我的正则表达式结合起来。

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

【问题讨论】:

【参考方案1】:

要使其成为可选,您可以使用可选的非捕获组 (?: 并在其后添加匹配的 0+ 次空格:

^[0-9]+(?:[,.][0-9]+)?\s*kg$

Regex demo

现在它会匹配

^ 字符串开头 [0-9]+ 1+ 位 (?:非捕获组 [,.][0-9]+ 匹配逗号或点和 1 个以上数字 )?关闭非捕获组并使其可选 \s*kg 匹配 0+ 次空白字符 $ 字符串结束

【讨论】:

【参考方案2】:

除了整数值之外,还可以选择性地合并十进制值,您可以将此正则表达式 (?:[.,]\d+)? 放在 ^[0-9]* 之后,这将允许它支持您在帖子中提到的十进制值。整体正则表达式变成了这样,

^\d*(?:[.,]\d+)?\s*kg\s*$

Demo

【讨论】:

以上是关于如何使这个正则表达式也接受小数的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式只接受带小数点和小数点的数字输入

我们可以编写一个正则表达式来接受所有重复的 '.'那是字符串中的小数点?

Js正则表达式 校验最多4位小数

C# 中整数或小数(10,2)的正则表达式

求只能输入 正数和两位小数 的正则表达式,要能用的。。。

js正则表达式 判断输入框是不是为正整数或者正整数保留两位小数