正则表达式可选浮点数
regex optional floating decimal
我有一个 MySQL double(10,2),我应用了以下正则表达式:/^\d{0,10}\.\d{2}$/
我没有通过 1234
的验证,我假设小数点是必需的(我知道 ?
是不存在的可选字符)。
在这个正则表达式中我应该把 ?
字符放在哪里?
谢谢
要解决眼前的问题,您需要围绕 \.\d{2}
的 optional group 模式 - (\.\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})?$/
我有一个 MySQL double(10,2),我应用了以下正则表达式:/^\d{0,10}\.\d{2}$/
我没有通过 1234
的验证,我假设小数点是必需的(我知道 ?
是不存在的可选字符)。
在这个正则表达式中我应该把 ?
字符放在哪里?
谢谢
要解决眼前的问题,您需要围绕 \.\d{2}
的 optional group 模式 - (\.\d{2})?
:
/^\d{0,10}(\.\d{2})?$/
它匹配从字符串开头开始的 0 到 10 位数字,然后要么需要字符串结尾,要么需要 .
和 2 位数字。
下一步,您可以使用 {1,2}
limiting quantifier:
/^\d{0,10}(\.\d{1,2})?$/
甚至使用 non-capturing group 获得一些非常微小的效率提升:
/^\d{0,10}(?:\.\d{1,2})?$/