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"不知道我是否已经描述清楚了,正则一直学的不好,请大家帮帮忙了。谢谢。
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"不知道我是否已经描述清楚了,正则一直学的不好,请大家帮帮忙了。谢谢。
感谢你的回复,"我也想看看有无高手可以一步到位做到。"
不太理解,可以在循环中输出满足条件的1welcome和2china
其实,我只是想得匹配的值
<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 ] }
<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(){
console.log(arguments[3]);
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>
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>
2.无状态:<!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>
function op(str) {
var result = [];
//如果p字符串满足这样的要求:以'['开始并且以']'结束,则我想获取位于[]之间的数据
//例当前p="[1welcome][2china][welcome t";
//我想获取1welcome以及2china,并且将[1welcome]和[2china]从p中删除或替换为空字符''
//将余下部分[welcome t保留
//这样结果就是p="[welcome t"
//可以使用console.log();打印匹配结果
var p = str.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>