我需要验证以下内容(在.Net中)。
带或不带小数点的数字,最小1,最多6个字符(包括小数)。 如果有小数,则只能有一个小数位。 所以这些都可以: 123 123456 1234.5 123.4 等。
这些不是: 1234567 123.15 1.100 等
我知道如何匹配可变数量的数字,但是通过使用或语法来完成上述操作的唯一方法(通过使用|我认为?)你可以在没有语法的情况下实现这样的事情吗?
答案 0 :(得分:5)
您可以通过使用更加模糊的结构(例如环视断言)轻松避免使用“或”。你为什么要避免它?
E.g。这应该按你的要求做:
^(?=.{1,6}$)\d+(\.\d)?$
答案 1 :(得分:1)
此正则表达式为^(\d{1,6}|\d{1,4}\.\d)$
。以下是如何推导出来的:
\d A single digit
\d{1,6} 1 to 6 digits [a]
\d{1,4}\.\d 1 to 4 digits, followed by a dot and one digit [b]
(\d{1,6}|\d{1,4}\.\d) Either [a] or [b] anywhere within the input
^(\d{1,6}|\d{1,4}\.\d)$ As above, but the input must contain nothing else
要获得出色的正则表达式参考,请转到http://www.regular-expressions.info。
答案 2 :(得分:1)
\b(\d{1,5}\.\d|\d{1,6})\b
为演示看看here。