Perl脚本在线上的任何地方显示仅包含有效电话号码的行?

时间:2016-05-16 20:52:39

标签: perl

如何编写一个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
    }

我想我可能有错误的正则表达式。你能帮忙吗?

1 个答案:

答案 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
}