如何编写一个Perl脚本,在该行的任何位置显示仅包含有效电话号码的行?
我们假设(888).888-8888是一个有效数字,其中8可以是任何数字。
So the sample input is
this is nota number
3214235234
(410).977-2132
my num is ((410.222-1231))
test 234 test
Output:
(410).977-2132
my num is ((410.222-1231))
这就是我所做的一切
if ($string =~ /^(?:(?:\+?1\s*(?:[.]\s*)?)?(?:\(\s*([.][2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$) {
# is a number
} else {
# is not
}
我想我可能有错误的正则表达式。你能帮忙吗?
答案 0 :(得分:0)
抓住线条: (888).888-8888 要么 ((888.888-8888)) 你可以使用这个正则表达式:
if ($string =~ /^.*?\({0,2}\d{3}\){0,2}\.\d{3}-\d{4}\){0,2}/) {
# is a number
} else {
# is not
}