2016-11-11 74 views
0

我想翻譯這個JS正則表達式翻譯正則表達式

^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$

在grep來使用。所有電話號碼以下匹配它:

+79261234567 
89261234567 
79261234567 
+7 926 123 45 67 
8(926)123-45-67 
123-45-67 
9261234567 
79261234567 
(495)1234567 
(495) 123 45 67 
89261234567 
8-926-123-45-67 
8 927 1234 234 
8 927 12 12 888 
8 927 12 555 12 
8 927 123 8 123 

我試了很多變體,但沒有人爲我工作。

+0

[這](HTTP:// stackoverflow.com/questions/7432379/convert-javascript-regexp-to-work-with-grep-or-sed)可能相關。 –

+0

這看起來像是一個正則表達式非常適合的問題。你想離開正則表達式的原因是什麼? –

+0

難道這只是'grep -E'[0-9]' –

回答

1

我沒有測試你的模式,雖然要考慮幾件事情:

[\- ]應改爲[- ][ -]

(以字符類[]逃逸破折號是不必要的,如果它是第一個 或最後)。

[\d]可能會失敗,因此無論是使用[0-9][:digit:]

因此,這讓你:

grep -E "^((8|\+7)[ -]?)?(\(?[0-9]{3}\)?[ -]?)?[0-9 -]{7,10}$" file 

egrep

egrep "^((8|\+7)[ -]?)?(\(?[0-9]{3}\)?[ -]?)?[0-9 -]{7,10}$" file