电话号码正则表达式

时间:2014-01-24 18:12:04

标签: clojure

包含一些代码,可以在字符串中找到单个数字,例如“555-555-5555”。但我不太确定如何扩展代码以查找字符串中的所有电话号码。代码在找到第一个数字后停止......

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

有没有办法扩展此代码以查找字符串中的所有数字?

2 个答案:

答案 0 :(得分: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") 

所以它会一直持续到找到字符串中的所有电话号码。

答案 1 :(得分:0)

我有兴趣搜索所有可能的电话号码,根据地区/国家代码和其他参数,检查电话号码库:

https://github.com/randomseed-io/phone-number

有一个函数 child 用于此目的:

https://randomseed.io/software/phone-number/phone-number.core#var-find-numbers