我正在尝试构建一些正则表达式来验证一些文本框控件。我做了一些研究和测试,但不能让这个工作。我试图创建正则表达式的示例如下:
分别为1和5,我使用了
([0-9]|[0-9]\d|45)$
([0-9]|[0-9]\d|1500000)$
我遇到问题的第一个是年龄范围16-65(含),我想要没有小数位。在这里发布帖子(Regular expression to allow numbers between -90.0 and +90.0)后,我想我可以使用逻辑并让它得到怀疑,但不能!
我得到的表达是:
(\d|([1-6][6-4]))|65
有人可以告诉我,我误解了这个!对上述其他例子的任何帮助都将受到热烈欢迎。
答案 0 :(得分:8)
很抱歉这样说,但你的正则表达不会起作用。请记住,正则表达式旨在匹配文本数据。虽然可以使用它们来匹配数字,但它并不是真正的选择工具。
如果 使用正则表达式,则需要考虑数字范围的可能文本表示。
对于示例1 ,即:
作为正则表达式:
^(?:\d|[1-3]\d|4[0-5])$
^
和$
锚点确保评估整个字符串; (?:...)
对交替进行分组,并将其与锚点“屏蔽”。
对于示例3 :
作为正则表达式:
^(?:1[6-9]|[2-5]\d|6[0-5])$
对于示例5 :
作为正则表达式:
^(?:\d{1,5}|1[0-4]\d{4}|150000)$
等等。
添加小数位并不是很困难:
\.\d{2}
适用于两位小数\.\d{1,3}
小数点后1到3位(?:\.\d{1,2})
表示0到2位小数(仅当至少有一位数字时才允许使用点数。)答案 1 :(得分:2)
16 - 65
包含的逻辑是1 plus 6-9 OR 2-5 plus 0-9 OR 6 plus 0-5
。
我认为1[6-9]|[2-5][0-9]|6[0-5]