我有一个匹配这样的东西的正则表达式: asdasd[text]; 它一次可以正常工作,但是如果有类似的东西:
$badinput="add[2,5,525];print['peron'];print['asd','cgfg];time;print['iudofiusdoif'];"; #time should not be matched
这是现在的代码:
verify($badinput);
sub verify
{
#returns 1 if it's ok, or the text that breaks the match
my $inp = pop;
if ($inp =~ /^(?:\w{2,6}\[(?<!\\\[).*?\](?<!\\\]);)+$/s)
{
return 1;
}else{
return 0; #should be the text that breaks the match or the char number
};
}
无论第一条指令是否匹配,它都会返回 1。我该如何解决这个问题?