2010-01-06 27 views
1

我想要一个数字的正则表达式,它是一个连续的数字字符串,没有空格 - 请大家帮忙!取决于实现我想 三江源reg表达式的一个数

+0

你可以发布一些示例字符串来匹配吗?例如 – jerjer 2010-01-06 09:16:40

+0

,“some45b40”,是否有匹配或45和40匹配? – jerjer 2010-01-06 09:17:35

回答

-1

d * 或 [0-9] * ...

+0

你的意思是'\ d',对吧?使用'+'代替'*':'\ d *'将匹配偶数和空字符串。 – Amarghosh 2010-01-06 09:15:07

+0

'*'表示'0或更多',所以这会匹配'[0-9] *'匹配一个空字符串。更糟糕的是,给定字符串“abcd”,这将返回5个匹配项:一个在字符串的开始和结尾,以及每个字符之间的一个。每场比赛将是0长度。 '+'规定'1或更多',并且不会这样做。 – 2010-01-06 09:16:13

5

这是最简单:

^\d+$ 

这个正则表达式仅一个序列匹配或更多数字。 ^$分别标记字符串的开始和结束。

但是,这也将允许前导零的数字。如果你不想这样,使用:

^(0|[1-9]\d*)$ 

这符合一个单一的01开头的号码.. 9后跟零个或多个任意数字。

+0

'^'和'$'分别标记行的开始和结束 - 由于非数字字符,这与a123456b不匹配。我不清楚这是OP的结果。 – 2010-01-06 09:13:13

+0

然后再说一遍,目前还不清楚它是不是OP想要的。 – 2010-01-06 09:23:04

1

\d+将在大多数实现中工作。

\d表示digit - 如果您的实施没有此功能,请改为使用[0-9]+

+表示one or more of the preceeding pattern

编辑:这是在python表示+*之间的差异的例子:

>>> import re 
>>> r = re.compile('[0-9]*') 
>>> print r.findall('asdf') 
['', '', '', '', ''] 
>>> r = re.compile('[0-9]+') 
>>> print r.findall('asdf') 
[] 
>>> print r.findall('abc12345ghi') 
['12345'] 
>>> r = re.compile('^[0-9]+$') 
>>> print r.findall('abc12345ghi') 
[] 
2

如果只是为正则表达式:

\ d 匹配任何十进制数字;这相当于类[0-9]。

所以,你可以写

\ d *或[0-9] * - 从空字符串到数字

\ d +或[0-9] +连续字符串 - 在至少一个数字

如果您想知道如何在特定语言中使用此语言,请指定语言pls。