正则表达式可选浮动小数

时间:2018-06-07 13:09:14

标签: regex regex-group

我有一个MySQL double(10,2),我已应用以下正则表达式:/^\d{0,10}\.\d{2}$/

我没有通过1234的验证,我假设小数是必需的(我理解?是可选的char,但不存在)。

我在哪里将?字符放在此正则表达式中?

感谢

1 个答案:

答案 0 :(得分:2)

要解决眼前的问题,您需要optional group \.\d{2}模式 - (\.\d{2})?

/^\d{0,10}(\.\d{2})?$/

它匹配字符串开头的0到10位数,然后要么是字符串的结尾,要么是.和2位数。

下一步,您可以使用{1,2} limiting quantifier在小数部分中允许1位或2位数字:

/^\d{0,10}(\.\d{1,2})?$/

甚至使用non-capturing group来提高效率:

/^\d{0,10}(?:\.\d{1,2})?$/