2014-01-24 158 views
1

包含一些可以在字符串中查找單個數字的代碼,如「555-555-5555」。但我不太確定如何擴展代碼以查找字符串中的所有電話號碼。代碼停止後,它發現第一個數字...電話號碼正則表達式

(defn foo [x] 
(re-find (re-matcher #"((\d+)-(\d+)-(\d+))" x))) 

有沒有辦法擴展此代碼來查找字符串中的所有數字?

回答

1

re-seq返回所有匹配的序列與正則表達式中的字符串:

user> (defn foo [x] (re-seq #"\d+-\d+-\d+" x))     
#'user/foo 

user> (foo "111-222-3333 555-666-7777")       
("111-222-3333" "555-666-7777") 

user> (foo "phone 1: 111-222-3333 phone 2: 555-666-7777")  
("111-222-3333" "555-666-7777") 

因此,這將繼續下去,直到找到字符串中的所有電話號碼。

+0

很好的答案,只是想添加有很多手機正則表達式 - https://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation – edbond