为什么用正则???
<?
$str=<<<EOT
111[
222[ ]
333[
]
444[
]a[
]
555[
666[ ]
777[
]
888[]
]
]
EOT;
echo substr($str,strpos($str,"[")+1,strrpos($str,"]")-strpos($str,"[")-1);
?>
<?
$str=<<<EOT
111[
222[ ]
333[
]
444[
]a[
]
555[
666[ ]
777[
]
888[]
]
]
EOT;
echo substr($str,strpos($str,"[")+1,strrpos($str,"]")-strpos($str,"[")-1);
?>
222[ ]
333[
]
444[
]a[
]
555[
666[ ]
777[
]
888[]
]
]
ccc[
222[ ]
333[
]
444[
]a[
]
555[
666[ ]
777[
]
888[]
]
]
substr(str,strpos(str,"["),strpos(str,"]"))
<textarea id="test">
111[
222[ ]
333[
]
444[
]a[
]
555[
666[ ]
777[
]
888[]
]
]
111[
222[ ]
333[
]
444[
]a[
]
555[
666[ ]
777[
]
888[]
]
]
</textarea>
<script>
function g(s){
var arr=[],i=0;
var re = /111\[([\s\S]*?)\]/
while (re.test(s)) {
arr[i++] = RegExp.$1;
s = s.replace(re, "");
}
return arr;
}
document.write(g(test.value).join("<br/>");
</script>
</script>
var strReg='';
for(var i=0;i<iMax;i++)
{
strReg='(\S{1,3}\[('+strReg+')\])*';
}strReg='/^('+strReg+')+$/';
<!--
function g(s) {
var arr=[], i=0;
var re = /111\[([\s\S]*)\]/;
while (re.test(s)) {
arr[i++] = RegExp.$1;
s = s.replace(re, "");
}
return arr;
}
document.write(g(test.value));
//-->
</script>
把fason的re改成无?号,测试通过。
因为按你的要求,写出来应该是这样:/^(\S{1,3}\[((\S{1,3}\[\])*)*\])+$/但这样根本就不是一个正则表单式!!!!