验证美国电话号码
以下正则表达式:
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
匹配任何空格,制表符或换行符