==========惭愧,正则太差,虚心向高手请教==========
var s = []; function op(str) { s.push(str); var p = s.join(""); //如果p字符串满足这样的要求:以'['开始并且以']'结束,则我想获取位于[]之间的数据 //例当前p="[1welcome][2china][welcome t"; //我想获取1welcome以及2china,并且将[1welcome]和[2china]从p中删除或替换为空字符'' //将余下部分[welcome t保留 //这样结果就是p="[welcome t" //可以使用console.log();打印匹配结果 }; //测试用例 op("[welcome to china]"); //这样调用p等于'',打印出welcome to china op("[welcome t"); //这样调用p="[welcome t" op("o china][wel"); // 这样调用p="o china][wel" op("[1welcome][2china][welcome t"); //这样调用打印出1welcome,2china,p="[welcome t"
<script>var s = []; function op(str) { var p = str; //s.push(str); //var p = s.join(""); //如果p字符串满足这样的要求:以'['开始并且以']'结束,则我想获取位于[]之间的数据 //例当前p="[1welcome][2china][welcome t"; //我想获取1welcome以及2china,并且将[1welcome]和[2china]从p中删除或替换为空字符'' //将余下部分[welcome t保留 //这样结果就是p="[welcome t" //可以使用console.log();打印匹配结果 var rt = []; p = p.replace(/\[([^\]]*)\]/g,function($_0,$_1){ rt[rt.length] = $_1; return ''; }) alert('Match:'+rt.join(',')) return p; };alert("p="+op("[welcome to china]")); //这样调用p等于'',打印出welcome to chinaalert("p="+op("[welcome t")); //这样调用p="[welcome t"alert("p="+op("o china][wel")); // 这样调用p="o china][wel"alert("p="+op("[1welcome][2china][welcome t")); //这样调用打印出1welcome,2china,p="[welcome t"</script>
[解决办法]
正则不是很会。。帮你顶下
[解决办法]
function op(str){ var tmp; var rep =/\[([^\]]+)\]/g var ret ={ count : 0, result : [], rightContext:"" }; while((tmp=rep.exec(str))!==null){ ret.result.push(tmp[1]) ret.count++; } ret.rightContext=RegExp.rightContext; return ret;}op("[1welcome][2china][welcome t") // return {count : 2, rightContext : "[welcome t", result : [ 1welcome , 2china ] }
[解决办法]
有点不太懂LZ的意思,你是想把op函数弄成有状态的还是没状态的?
1.有状态:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title></head><body> <script> var s = []; function op(str) { var result = []; s.push(str); var p = s.join(""); //如果p字符串满足这样的要求:以'['开始并且以']'结束,则我想获取位于[]之间的数据 //例当前p="[1welcome][2china][welcome t"; //我想获取1welcome以及2china,并且将[1welcome]和[2china]从p中删除或替换为空字符'' //将余下部分[welcome t保留 //这样结果就是p="[welcome t" //可以使用console.log();打印匹配结果 p = p.replace(/\[([^\[\]]*)\]/g, function(){ result.push(arguments[1]); return ''; }); console.log("p: " + p +"; result: " + result); return result; }; //测试用例 op("[welcome to china]"); //这样调用p等于'',打印出welcome to china op("[welcome t"); //这样调用p="[welcome t" op("o china][wel"); // 这样调用p="o china][wel" op("[1welcome][2china][welcome t"); //这样调用打印出1welcome,2china,p="[welcome t" </script></body></html>
[解决办法]
替换掉"["和"]"再输出就可以了