2014-01-24 120 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