驗證美國電話號碼

以下正規表示式:

us.phones.regex <- "^\\s*(\\+\\s*1(-?|\\s+))*[0-9]{3}\\s*-?\\s*[0-9]{3}\\s*-?\\s*[0-9]{4}$" 

驗證電話號碼:+1-xxx-xxx-xxxx,包括每組數字開頭/結尾的可選前導/尾隨空白,但不在中間,例如:+1-xxx-xxx-xx xx 無效。- 分隔符可以用空格替換:xxx xxx xxx 或不用分隔符:xxxxxxxxxx+1 字首是可選的。

我們來檢查一下:

us.phones.regex <- "^\\s*(\\+\\s*1(-?|\\s+))*[0-9]{3}\\s*-?\\s*[0-9]{3}\\s*-?\\s*[0-9]{4}$"

phones.OK <- c("305-123-4567", "305 123 4567", "+1-786-123-4567", 
    "+1 786 123 4567", "7861234567", "786 - 123   4567", "+ 1 786 - 123   4567")

phones.NOK <- c("124-456-78901", "124-456-789", "124-456-78 90", 
    "124-45 6-7890", "12 4-456-7890")

有效案例:

> grepl(us.phones.regex, phones.OK)
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE
> 

無效的案例:

 > grepl(us.phones.regex, phones.NOK)
[1] FALSE FALSE FALSE FALSE FALSE
> 

注意

  • \\s 匹配任何空格,製表符或換行符