以下是我给的数据:
var data = "a2Aaab3B";
var pattern = /([a-z])(\d)([A-Z])/g,
我要取出 3,也就是取出第个年匹配的第二个括号的东西?
用match我会,是:
var d=data.match(pattern)[1].match(/\d/);//取出了我想要的。
用exec方法怎么做?
var data = "a2Aaab3B";
var pattern = /([a-z])(\d)([A-Z])/g,
我要取出 3,也就是取出第个年匹配的第二个括号的东西?
用match我会,是:
var d=data.match(pattern)[1].match(/\d/);//取出了我想要的。
用exec方法怎么做?
var reg=/(\d)/g;
while(reg.exec(data)){
alert(RegExp.$1);
}
我要的是第二年匹配的第二年括号的东西,不要全部。
<script type="text/javascript">
<!--
var data = "a2Aaab3B";
var pattern = /([a-z])(\d)([A-Z])/g;
if((r = pattern.exec(data)) != null){
alert(r[2])
}
//-->
</script>
<script type="text/javascript">
<!--
var data = "a2Aaab3B";
var pattern = /([a-z])(\d)([A-Z])/g, arr = [];
while((r = pattern.exec(data)) != null){
arr.push(r[2]);
}
alert(arr[1]); //一直不太了解楼主的意图 把值都选出来可以自己筛选啊..
//-->
</script>
match是找匹配的,它找的整体,比方说:
var data = "a2Aaab3B";
var pattern = /([a-z])(\d)([A-Z])/g
用data.match()
它打出来的是
a2A和b2B
我想再细分
对于a2A:
a匹配([a-z]);
2匹配(\d);
A匹配([A-Z])
对于b3B:
b匹配([a-z]);
3匹配(\d);
B匹配([A-Z])
我想取出3怎么办
如果用pattern.exec(data)[2]取出来的是2,即它找出来的是第一个match,而我的3是第二个match,怎么取3?
<!--
var data = "a2Aaab3B";
var pattern = /\d.+?(\d)/g;
var d=pattern.exec(data);
alert(d[1]);
//-->
</script>
var rv=[];
data.replace(/([a-z])(\d)([A-Z])/g,function($,$1,$2){rv.push($2)})
alert(rv[1]);
已知:
var data = "a2Aaab3B";
var pattern = /([a-z])(\d)([A-Z])/g
问题:要取出 3,也就是取出第个年匹配的第二个括号的东西。
答案(alert为答案):
1.使用exec: var rv=[];
var r;
while((r=pattern.exec(data))!=null){
rv.push(r[2]);
}
alert(rv[1]);2.使用matchvar result=data.match(pattern)[1].match(/\d/);
alert(result);3.使用replace:var rl=[];
data.replace(pattern,function($,$1,$2,$3){rl.push($2);});
alert(rl[1]);谁还有方法可以继续写,欢迎交流。