正则表达式 - 验证IPV6地址

时间:2017-08-08 10:28:48

标签: regex shell

正如我在不同的thread中所要求的那样,正则表达式正在使用shell脚本正常工作但是当我使用echo命令时

 echo "2001:0Db8:85a3:0000:8a2e:0370:7334" | grep "^([0-9a-fA-F]{0,4}:){1,7}([0-9a-fA-F]){0,4}$"

没有输出,echo $?返回 1

正则表达式不能与echo / grep一起使用吗?

1 个答案:

答案 0 :(得分:2)

您在此处使用的是ERE POSIX语法。使用-E选项可使grep使用POSIX ERE。

或者,转义()以及{}以使模式与POSIX BRE兼容:

echo "2001:0Db8:85a3:0000:8a2e:0370:7334" | grep "^\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}$"

请参阅online demo