Regex 正则表达式-如何使我的正则表达式在字符串为空时不通过
我有一个正则表达式,它将验证以确保我有一个数字。但是如果我正在检查的字符串也是“”,那么它就通过了。我怎样才能使“”失败 试一试Regex 正则表达式-如何使我的正则表达式在字符串为空时不通过,regex,Regex,我有一个正则表达式,它将验证以确保我有一个数字。但是如果我正在检查的字符串也是“”,那么它就通过了。我怎样才能使“”失败 试一试 您可能需要至少一位数字: ^-?\d[\d,]*(?:\.\d+)?$ ^^ required 也允许匹配。05: ^-?\d[\d,]*(?:\.\d+)?$|^-?\.\d+$ 请注意,您的表达式还允许一个接一个地使用多个逗号,这可能是不需要的。那么 ^-?\d+(,\d{3})*(\。\d+)$^-?\。\d+$ 在Rubular上进行了测试,非常
您可能需要至少一位数字:
^-?\d[\d,]*(?:\.\d+)?$
^^
required
也允许匹配。05:
^-?\d[\d,]*(?:\.\d+)?$|^-?\.\d+$
请注意,您的表达式还允许一个接一个地使用多个逗号,这可能是不需要的。那么
^-?\d+(,\d{3})*(\。\d+)$^-?\。\d+$
在Rubular上进行了测试,非常棒(谢谢,Mark!)它会接受一些粗心的逗号管理,比如“1234567”,但会拒绝“123,,,,456”这样明显的废话 你在用什么语言?毫无疑问,对于您来说,有一种更好的方法来检测“这是一个数字吗?”而不是从头开始滚动您自己的正则表达式。如果您使用的是Perl,那么请查看Regexp::Common模块,它提供了几十个经过时间测试的正则表达式供您使用。这是适用于分组小数的正则表达式:
^-?(?:\\.\\d+|\\d{1,3}(?:,\\d{3})*(\\.\\d*)?)$
- 它接受初始符号
- 之后,它会创建一个具有两个路径的树,周期或1-3位数字
- 如果这两个都没有,它就会失败李>
- 如果它看到一个句点,那么它将接受任意数量的数字,但至少是1
- 如果它看到一个数字簇,它将使用由逗号+3个数字组成的任意数量的组
- 然后,你可以有一个小数点,如果你想要的话,并在它后面加上你想要的数字李>
^-?(?:\\.\\d+|\\d{1,3}(?:\\d*|(?:,\\d{3})+)(\\.\\d*)?)$
但它不允许一个人在一个小组中包含超过3个成员。因此,在1-3位之后,必须有另一位数字、逗号、句点或结尾
- 如果是一个数字,那么后面只能跟一个数字或一个句号李>
- 给定一个逗号,后面只能跟3个数字。由于
处理立即期的情况,因此我们将其强化为1或更多\\d*
^-?(?:\\.\\d+|\\d{1,3}(?:,\\d{3})*(\\.\\d*)?)$
^-?(?:\\.\\d+|\\d{1,3}(?:\\d*|(?:,\\d{3})+)(\\.\\d*)?)$