Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl脚本,该脚本显示仅在线路上任何位置包含有效电话号码的线路?_Perl - Fatal编程技术网

Perl脚本,该脚本显示仅在线路上任何位置包含有效电话号码的线路?

Perl脚本,该脚本显示仅在线路上任何位置包含有效电话号码的线路?,perl,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)) 这是我到目前为止所拥有的

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

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

要想用以下方法来捕捉线路: (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
}

“我想我可能有错误的正则表达式。”这就是为什么你不应该盲目复制你不懂的代码。编写的输入范围比您试图支持的范围要广得多,包括国家代码和扩展。当然,
(000).000-0000
可能不是一个有效的电话号码…你确定要匹配它吗?是的,我想匹配它为什么你认为你的正则表达式错误?您不希望匹配或不希望匹配的输入是什么?@ysth除了OP代码中的语法错误外,正则表达式与410区号不匹配。