2016-11-04 46 views
0

我有一個電話號碼,我想數字07是常數,那麼其餘的應該是正則表達式?我將07X XXXX XXX作爲數字使用哪種正則表達式?

礦看起來像這樣:/^\07(?([0-9]{1})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/

例號碼:0752 8182 12

+1

嘗試工具,如Regexr,看你如何到達那裏了。 – TankorSmash

+1

真的嗎?(?'?你有沒有在括號之前忽略'''''\ 07'並且將其解析爲一個八進制值,刪除那個''''。 –

+1

你可以給出一些示例數字看起來匹配? – ericbowden

回答

3

我建議修復您的圖案

/^07\(?([0-9])\)?[-. ]?([0-9]{4})[-. ]?([0-9]{3})$/ 

regex demo

您第一(之前錯過了\\07反斜槓作出的正則表達式引擎將07部分解析爲八進制值。

圖案的詳細資料

  • ^ - 字符串的開始
  • 07 - 07
  • \(? - 可選(,你需要的,如果你這樣做與\)?一起卸下不想允許像07(5) 4444 333這樣的值)
  • ([0-9]) - 數字(在(如果你不需要讓所拍攝的潛臺詞)可以被移除)
  • \)? - 可選)
  • [-. ]? - 可選-.或空間
  • ([0-9]{4}) - 4數字(約括號相同的音符)
  • [-. ]? - 同上
  • ([0-9]{3}) - 3位(大約括號相同的音符)
  • $ - 字符串結尾。
1

我清理你的正則表達式一些,你並不需要有,除非你正在做的事情跟團的那些額外的括號:

/^07\(?[0-9]\)?[-. ]?[0-9]{4}[-. ]?[0-9]{3}$/ 

將匹配這些數字

071 1111 111 
077.1151.111 
071-3211-121 
0711111111 
07(1) 1111 111 
1

你沒有提供有效和無效數字的例子,我猜根據你的正則表達式。試試這個:

var numbers = [ 
    "07", 
    "070 1234 123", 
    "070-1234-123", 
    "070.1234.123", 
    "07(0)1234-123", 
    "07(0) 1234-123", 
    "0070 1234 123", 
    "070 123 1234" 
]; 

//var pattern = /^07\(?([0-9]{1})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/; 
var pattern = /^07\(?\d\)?[-. ]?\d{4}[-. ]?\d{3}$/; 
// /d = [0-9] 
var matched = numbers.map(function (number) { 
    var matches = number.match(pattern); 
    if (matches) { 
     console.log(number + " valid"); 
    } else { 
     console.log(number + " invalid"); 
    } 
}); 

輸出是:

07valid 
070 1234 123 valid 
070-1234-123 valid 
070.1234.123 valid 
07(0)1234-123 valid 
07(0) 1234-123 valid 
0070 1234 123 invalid 
070 123 1234 invalid 
相關問題