什么是“任何正整数,不包括0”的正则表达式

时间:2011-08-12 06:22:04

标签: java regex

如何改进^\d+$以禁止0

编辑(更具体):

允许的示例:
1
30个
111个
禁止的例子:
0
00
-22

如果允许或不允许具有前导零的正数(例如022),则无关紧要。

这适用于Java JDK Regex实现。

13 个答案:

答案 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*)$