日期:2014-05-16 浏览次数:20576 次
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 china
alert("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("");