正则表达式为1.1的数字

时间:2017-04-14 14:22:41

标签: php regex

我正在尝试使用正则表达式来允许以下

1
1.1 
9.9
9

但不允许1.11或9.97或9,7

有人可以帮助我吗?

我试过这个'/[0-9]+(\.[0-9]?)?/',但仍然允许1.11

4 个答案:

答案 0 :(得分:1)

'/[0-9]{1,}.[0-9]/'

这也应该有效

答案 1 :(得分:1)

您的正则表达式与您描述的模式匹配,但无法排除您不想匹配的模式。 1.1中的1.11部分与您的正则表达式匹配。要排除1.11,您可以添加到正则表达式,字符串必须在第一个小数后面结束:^\d+(\.\d)?$

\d匹配任何数字;你必须逃避.,否则它会匹配任何角色;并且$表示'字符串结尾'。如需快速参考,您可以查看this

从逻辑上讲,问题也发生在正则表达式的开头,你肯定会匹配a1.1。特殊字符^表示“字符串的开头”。

符合您需求的正则表达式将是:

^\d+(\.\d)?$

答案 2 :(得分:0)

这个应该有效

LOCAL_CFLAGS

你接近你的例子,只需要声明字符串的开头和结尾。

答案 3 :(得分:0)

'/\A\d[.]\d\z/'

\ A:字符串的开头

\ d:任意数字

[。]:单个字符“。”

\ d:任意数字

\ z:字符串的结尾