Joh*_*ohn 5 php regex pcre preg-match
可能的重复:用于
检查字符串是否有不匹配的括号的正则表达式?
我正在尝试编写一个正则表达式来仅匹配一串数字,可选地用括号括起来(正则表达式还必须检查括号是否正确关闭,即它们是否存在于 pars 中)。因此,所有这些都应该被正则表达式视为有效:1234567 123(45)6 (123)(456)
我使用条件模式想出了这个(请注意,我使用空格,因此需要 x 修饰符来使其忽略空格):
$val = "(123)";
$regex = "^( (\()? [0-9]+ (?(2)\)) )+$";
$ret = preg_match("/{$regex}/x", $val, $matches);
Run Code Online (Sandbox Code Playgroud)
然而,虽然它正确匹配上面的“(123)”,但它也匹配下面不应该匹配的:“(123)45)”(第二个数字只有右括号)
有人可以帮忙吗?
注意:不允许嵌套括号