2014-01-16 89 views
-2

我有以下的正則表達式來測試手機號碼:/^1[0-9]{10}|[0-9]{8}$/。 如果我有字符串"123456789",我用Java測試它,結果是錯誤的;但在JavaScript中,結果是正確的。任何人都可以告訴我原因嗎?js和java之間的正則表達式的區別

+1

我不相信在Java測試的結果是錯誤的。 – Pointy

+0

正則表達式表示,「a'1'後面跟着10個數字或8位數字 – Pointy

+0

@Pointy,如果它是'/^1([0-9] {10} | [0- 9] {8})$ /',是不是像'/ ^(1 [0-9] {10} | [0-9] {8})$ /'這樣匹配?我沒有嘗試運行這在java btw中 –

回答

0

在Java中,您可能正在使用match。類似的東西;我對Java並不熟悉。無論如何,主要的想法是,該方法只檢查字符串的開始的匹配。你的正則表達式匹配一個以1開頭的字符串和10個數字,或者以8位數字結尾的字符串; 123456789既不是。在JavaScript中,所有三個String.prototype.match,RegExp.prototype.execRegExp.prototype.test檢查任何地方。

我想你的意思是:

/^(1[0-9]{10}|[0-9]{8})$/ 

但是,這仍然; 123456789難以匹配,這是更嚴格的。我不知道你的意圖是什麼,但它只是不工作:

  • 三人失蹤位數+12(345)678-9 ___
  • 兩名失蹤位數+1(234)567- 89__
  • (123)中的一個缺失數字456-789
  • 123-4567中的兩位數字太多| 89

雖然我對其他國家的電話號碼格式不太瞭解。

+0

是的,我需要的是javaScript的結果是false.But是真的。你說得對,非常感謝你 – chaser

+0

@chaser:然後使用一個組,就像提供的示例一樣。 – Ryan

相關問題