2010-01-06 52 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。