匹配所有的 []包括里面的内容
var aa = '123[12123][asd][asdas]123[!@3asd234]';
alert(aa.match(/\[([^\]]*?)]/g));
想这种不带嵌套的肯定是没什么问题的
但是遇到这种情况就会出差错啦var aa = '12[3[12123]ghgjh][asd][asdas]123[!@3asd234]';
alert(aa.match(/\[([^\]]*?)]/g));如果匹配出嵌套的情况了.....
var aa = '123[12123][asd][asdas]123[!@3asd234]';
alert(aa.match(/\[([^\]]*?)]/g));
想这种不带嵌套的肯定是没什么问题的
但是遇到这种情况就会出差错啦var aa = '12[3[12123]ghgjh][asd][asdas]123[!@3asd234]';
alert(aa.match(/\[([^\]]*?)]/g));如果匹配出嵌套的情况了.....
解决方案 »
- 高手们的回复++是什么意思呀
- JavaScript修改xml格式的字符串
- 目录式菜单被下面的桢遮住了
- 网页中使用 activex插件问题
- createTextRange在Firefox,Chrome等非IE浏览器的兼容问题
- 我想改变下拉框的按钮和滚动条的颜色,并且把它们变成扁平的形状,行吗?
- 如何让web页面重新刷新一下啊? 就好比F5的作用一样啊
- 如何在javascript中实现使一个连接<A href=test.htm>test</A>失效?
- javascript中怎样将小数取整
- 手机浏览器地址栏隐藏后就不在显示
- Ext comb后台获取他的值的问题
- 在IE7.0下面JS代码不运行 ,帮忙改写
<script type="text/javascript">
var matchRecursive = function () {
var formatParts = /^([\S\s]+?)\.\.\.([\S\s]+)/,
metaChar = /[-[\]{}()*+?.\\^$|,]/g,
escape = function (str) {
return str.replace(metaChar, "\\$&");
}; return function (str, format) {
var p = formatParts.exec(format);
if (!p) throw new Error("format must include start and end tokens separated by '...'");
if (p[1] == p[2]) throw new Error("start and end format tokens cannot be identical"); var opener = p[1],
closer = p[2],
iterator = new RegExp(format.length == 5 ? "["+escape(opener+closer)+"]" : escape(opener)+"|"+escape(closer), "g"),
results = [],
openTokens, matchStartIndex, match; do {
openTokens = 0;
while (match = iterator.exec(str)) {
if (match[0] == opener) {
if (!openTokens)
matchStartIndex = iterator.lastIndex;
openTokens++;
} else if (openTokens) {
openTokens--;
if (!openTokens)
results.push(str.slice(matchStartIndex, match.index));
}
}
} while (openTokens && (iterator.lastIndex = matchStartIndex)); return results;
};
}();
console.log(matchRecursive("12[3[12123]ghgjh][asd][asdas]123[!@3asd234]", "[...]")); // ["3[12123]ghgjh", "asd", "asdas", "!@3asd234"]
</script>
/\[[^\[\]]*(((?'open'\[)[^\[\]]*)+((?'-open'\])[^\[\]]*)+)*(?(open)(?!))\]/g
JS的正则有太多的不支持,还有待考虑