2009-12-28 466 views
4

如果輸入9位或14位數字,我需要通過Regex表達式來檢查。如何將9或14位數字與正則表達式匹配?

表達式\d{9}|\d{14}似乎無法正常工作,出了什麼問題?

+0

以何種方式無法正常工作? – Ken 2009-12-28 19:57:57

+0

這個正則表達式應該可以正常工作。這可能是你使用它的方式是錯誤的。謹慎發佈更多細節? – zombat 2009-12-28 19:57:59

回答

14

這個正則表達式應該可以工作。

^(\d{9}|\d{14})$ 

您可以發佈您正在使用的代碼段並告訴我們您使用的是哪種語言? 如果你使用正則表達式的機會是你有一個字符串,我相信你的語言有一些東西來計算字符串的長度。

編輯:
魯本斯在法里亞斯的評論中指出,也許^ ......需要$因爲你的正則表達式將匹配任何數量超過9位數字作爲數字與9位長號碼的字符串。

反正檢查,如果你可以用你的語言的字符串的方法/函數做

+1

也許你應該使用^ .. $來匹配整個輸入文本。 – 2009-12-28 19:59:36

+0

你是對的,謝謝! – 2009-12-28 22:29:58

+0

儘管'^(\ d {9} | \ d {14})$'正則表達式可以很好地適用於Java或JavaScript,但它完全不適用於XSD。它只保持匹配'或'表達式的第一個元素(XSD也不能包含錨點,因爲它隱式地錨定了整個表達式) - 任何不同於9的數字被認爲是無效的。 使用以下正則表達式工作 - 「\ d {9}(\ d {5})?'。 – AndrewMcCoist 2017-12-22 12:27:19

-3

使用lenght檢查一下,正則表達式不計

+0

長度不會告訴你字符是否都是數字。因此,爲什麼正則表達式更可取。 – AwDogsGo2Heaven 2016-04-06 20:51:48

0

它依賴於正則表達式語法的變體使用的是就長度{N-M}運營商是否支持。你在使用哪一個?

7

您可以使用:

^(?:\d{9}|\d{14})$ 

說明:

^  - Start anchor 
(?:  - Start of non-capturing group  
\d{9} - 9 digits 
|  - alternation 
\d{14} - 14 digits 
)  - close of the group. 
$  - End anchor 

或者你可以這樣做:

^\d{9}(?:\d{5})?$ 

其中匹配9數字後跟可選5數字。

相關問題