如何使这个正则表达式也接受小数
Posted
技术标签:
【中文标题】如何使这个正则表达式也接受小数【英文标题】:How to make this regex accept decimals also 【发布时间】:2019-06-24 04:47:10 【问题描述】:我有一个像这样的正则表达式
/^[0-9]*\s*kg\s*[0-9]*$/
这接受像100 kg
或100kg
这样的字符串。我想让它也接受100.1kg
或100.1 kg
或10,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
【讨论】:
以上是关于如何使这个正则表达式也接受小数的主要内容,如果未能解决你的问题,请参考以下文章