<?php

$re = '#^(([^()]|\((?1)\))*)$#';

foreach (array('', '1', '()', '(())', '1(2)3', '(()())', '()()', '()x()1') as $value)
	echo "'$value' (OK) -> " . (preg_match($re, $value) ? 'OK' : 'invalid') . "\n";

foreach (array('1(', ')', '(()', '12)3', '((())', '()(()') as $value)
	echo "'$value' (invalid) -> " . (preg_match($re, $value) ? 'OK' : 'invalid') . "\n";
