我必须检查表示八进制数的给定XML元素的内容是否在0-77776范围内。
是否可以仅使用正则表达式获得此结果?我已经尝试了很多方面但不知何故有些情况没有得到处理。我找不到匹配7和54327而不是77777的单个表达式。
您建议采用其他什么方法?
答案 0 :(得分:1)
这个正则表达式有效,但到目前为止我只能在perl中使用它。希望您使用的任何引擎都支持它:
^([0-7]{0,4}|[0-7]{4}(?(?<=^7777)[0-6]|[0-7]))$
perl脚本示例:
sub verify {
$num = shift;
if ($num =~ m/^([0-7]{0,4}|[0-7]{4}(?(?<=^7777)[0-6]|[0-7]))$/) {
print "$num: yes\n";
}
else { print "$num: no\n"; }
}
@nums = ("54327","7","77776","77777","77774");
foreach (@nums) {
verify $_;
}
输出:
54327: yes
7: yes
77776: yes
77777: no
77774: yes