如何改进^\d+$
以禁止0
?
编辑(更具体):
允许的示例:
1
30个
111个
禁止的例子:
0
00
-22
如果允许或不允许具有前导零的正数(例如022
),则无关紧要。
这适用于Java JDK Regex实现。
答案 0 :(得分:150)
试试这个:
^[1-9]\d*$
...和一些填充超过30个字符的答案限制: - )。
答案 1 :(得分:61)
很抱歉迟到但是OP希望允许076
,但可能不想允许0000000000
。
因此,在这种情况下,我们需要一个包含至少一个非零的一个或多个数字的字符串。那是
^[0-9]*[1-9][0-9]*$
答案 2 :(得分:13)
您可以尝试使用否定前瞻声明:
^(?!0+$)\d+$
答案 3 :(得分:8)
尝试这个,这个最适合要求。
[1-9][0-9]*
以下是示例输出
String 0 matches regex: false
String 1 matches regex: true
String 2 matches regex: true
String 3 matches regex: true
String 4 matches regex: true
String 5 matches regex: true
String 6 matches regex: true
String 7 matches regex: true
String 8 matches regex: true
String 9 matches regex: true
String 10 matches regex: true
String 11 matches regex: true
String 12 matches regex: true
String 13 matches regex: true
String 14 matches regex: true
String 15 matches regex: true
String 16 matches regex: true
String 999 matches regex: true
String 2654 matches regex: true
String 25633 matches regex: true
String 254444 matches regex: true
String 0.1 matches regex: false
String 0.2 matches regex: false
String 0.3 matches regex: false
String -1 matches regex: false
String -2 matches regex: false
String -5 matches regex: false
String -6 matches regex: false
String -6.8 matches regex: false
String -9 matches regex: false
String -54 matches regex: false
String -29 matches regex: false
String 1000 matches regex: true
String 100000 matches regex: true
答案 4 :(得分:7)
^\d*[1-9]\d*$
这可以包括所有正值,即使它在前面用零填充
允许
1
01
10
11等
不允许
0
00
000等..
答案 5 :(得分:2)
得到这个:
^[1-9]|[0-9]{2,}$
有人打败了吗? :)
答案 6 :(得分:2)
您可能想要这个(编辑:允许表单0123
的编号):
^\\+?[1-9]$|^\\+?\d+$
然而,如果是我,我会改为
int x = Integer.parseInt(s)
if (x > 0) {...}
答案 7 :(得分:1)
只是为了好玩,使用前瞻的另一种选择:
^(?=\d*[1-9])\d+$
尽可能多的数字,但至少有一个必须是[1-9]
。
答案 8 :(得分:0)
此RegEx匹配0以外的任何整数正数:
import logging
def add_login_cookies(driver, cookies):
try:
if cookies:
for cookie in cookies:
driver.add_cookie(cookie)
print('Added Cookies')
else:
raise ValueError("No Cookies Passed !")
except Exception as e:
print("Could not add login cookies")
logging.exception(e)
它与两个负向后查找配合使用,后者在数字前搜索负号,表示该数字为负数。它也适用于任何大于-9(例如-22)的负数。
答案 9 :(得分:0)
我的模式很复杂,但是它恰好涵盖了“任何正整数,不包括0”(1-2147483647,不长)。 用于十进制数字,不允许前导零。
^((1?[1-9][0-9]{0,8})|20[0-9]{8}|(21[0-3][0-9]{7})|(214[0-6][0-9]{6})
|(2147[0-3][0-9]{5})|(21474[0-7][0-9]{4})|(214748[0-2][0-9]{3})
|(2147483[0-5][0-9]{2})|(21474836[0-3][0-9])|(214748364[0-7]))$
答案 10 :(得分:0)
任何正整数,不包括0:^\+?[1-9]\d*$
任何正整数,包括0:^(0|\+?[1-9]\d*)$
答案 11 :(得分:-2)
^ [1-9] * $是我能想到的最简单的
答案 12 :(得分:-3)
这应该只允许小数> 0
^([0-9]\.\d+)|([1-9]\d*\.?\d*)$