首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >awk (mawk):正则表达式编译失败(缺少操作数)

awk (mawk):正则表达式编译失败(缺少操作数)
EN

Unix & Linux用户
提问于 2018-06-05 04:48:22
回答 1查看 3.5K关注 0票数 1

我想使用以下与awk的正则表达式来验证电话号码:

代码语言:javascript
运行
复制
echo 012-3456-7890 | awk '/^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$/ {print $0}'

但我得到了以下错误:

代码语言:javascript
运行
复制
awk: line 1: regular expression compile failed (missing operand)
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-06-05 06:24:43

因为这里使用的范围是固定长度的,所以您可以简单地写出整个范围[0-9]{3} => [0-9][0-9][0-9]。而不是(| |-|.)( |-|.)? --尽管我很困惑:除了空间和-之外,你还允许任何角色(.)吗?那么它可能只是.?,因为空间和-无论如何都是由.匹配的。如果要匹配文本句点.,则应该使用[- .]? (前面的-是避免将其解释为字符范围)。所以:

代码语言:javascript
运行
复制
^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$

变成:

代码语言:javascript
运行
复制
^\(?0[1-9][1-9]\)?[- .]?[1-9][0-9][0-9][0-9][- .][0-9][0-9][0-9][0-9]$
票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/447905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档