regex - 文本输入的正则表达式

标签 regex

我希望允许用户输入数字,小数点前最多 3 位数字,可选小数位,可选小数位后最多 2 位数字。

我希望它匹配:12、123、123.5、123.55、123。 我不希望它匹配:abc, 1234, 123.555

到目前为止我所拥有的: ^\d{0,3}(.?)\d{0,2}$

目前它仍然匹配 1234。我想我需要以某种方式使用后视运算符,但我不确定如何使用。

谢谢

最佳答案

试试这个:

^\d{0,3}(?:\.\d{0,2})?$

或者更好,避免只是 .:

^(?:\d{1,3}(?:\.\d{0,2})?|\.\d{1,2})$

具体来说,请注意:

  • 转义点,或者匹配任何字符(换行符除外),包括更多数字。
  • 使整个小数部分可选,包括点。也就是说 - 小数点不是可选的 - 如果我们要匹配小数部分中的任何数字,则必须包含小数点。
  • 即使您转义了点,^\d{0,3}(\.?)\d{0,2}$ 也不正确。如果点可选,它可以匹配 12378:\d{0,3} 匹配 123(\.?) 不匹配任何内容,而 \d{0,2} 匹配 78

工作示例:http://rubular.com/r/OOw6Ucgdgq

关于regex - 文本输入的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5415216/

相关文章:

php - 更改查询字符串中的单个变量值

regex - 如果遇到其他多个节标题中的任何一个,如何退出Sed中的节模式匹配?

regex - 正则表达式 - 以字符串开头和结尾

javascript - 仅允许输入字母数字、特殊字母和符号

c# - 如何使用正则表达式检查特殊字符

java - 如果字符串在 Java 中有一个以上的空格,如何插入一个单词?

ruby - 如何在 ruby​​ 中使用正则表达式计算子字符串?

python - 打印出矩阵中的值

regex - RegularExpressionAttribute - 如何使它对客户端验证不区分大小写?

javascript - 使用正则表达式匹配分组的列表元素