【发布时间】:2017-08-08 10:11:57
【问题描述】:
我能够使用带有以下正则表达式的 java 验证 IPv6 地址:
([0-9a-fA-F]{0,4}:){1,7}([0-9a-fA-F]){0,4}
但我需要在我不熟悉的 shell 脚本中执行此操作。
这个正则表达式似乎在 shell 中不起作用。也尝试了其他一些组合,但没有任何帮助。
#!/bin/bash
regex="([0-9a-fA-F]{0,4}:){1,7}([0-9a-fA-F]){0,4}"
var="$1"
if [[ "$var" =~ "$regex" ]]
then
echo "matches"
else
echo "doesn't match!"
fi
它为 2001:0Db8:85a3:0000:0000:8a2e:0370:7334
提供输出 不匹配!如何在 shell 脚本中编写这个?
【问题讨论】:
-
相同的正则表达式应该可以工作。你能显示你的shell脚本代码吗?
-
已将脚本添加到问题中。
-
你也应该锚定你的正则表达式:
regex='^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$' -
我可以建议您重新编辑并保留原始错误吗?否则这个问题就没有意义了,有类似问题的读者可能会感到困惑。
-
@anubhava 请回答,我会接受的。