我想将以下正则表达式与 awk 一起使用来验证电话号码:
echo 012-3456-7890 | awk '/^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$/ {print $0}'
但我收到以下错误:
awk: line 1: regular expression compile failed (missing operand)
我想将以下正则表达式与 awk 一起使用来验证电话号码:
echo 012-3456-7890 | awk '/^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$/ {print $0}'
但我收到以下错误:
awk: line 1: regular expression compile failed (missing operand)
由于此处使用的范围是固定长度的,因此您可以简单地写出整个范围
[0-9]{3}
=>[0-9][0-9][0-9]
。而不是(| |-|.)
,( |-|.)?
- 虽然我很困惑:.
除了空格和之外,您是否允许任何字符()-
?那么它可能只是.?
因为空间并且无论如何-
都匹配。.
如果您匹配文字 period.
,那么您应该[- .]?
改用(前导-
是为了避免解释为字符范围)。所以:变成: