<分区>
Possible Duplicate:
Regex for checking if a string has mismatched parentheses?
我正在尝试编写一个正则表达式来仅匹配一串数字,可选地括在括号中(正则表达式还必须检查括号是否正确关闭,即它们是否存在于 pars 中)。 所以所有这些都应该被正则表达式认为是有效的: 1234567 123(45)6 (123)(456)
我想出了这个使用条件模式(注意我使用空格所以需要 x 修饰符来让它忽略空格):
$val = "(123)";
$regex = "^( (\()? [0-9]+ (?(2)\)) )+$";
$ret = preg_match("/{$regex}/x", $val, $matches);
然而,尽管它正确匹配了上面的“(123)”,它也匹配了下面它不应该匹配的: “(123)45)”(第二个数字只有右括号)
有人可以帮忙吗?
注意:不允许嵌套括号