javascript正则表达式提取字符串,我想提取这种字符串WO2012107238 (A1)

2024-12-16 18:24:44
推荐回答(4个)
回答1:

首先,如果你想多个匹配必须加上模式g。即

var regExp=new RegExp(/[a-zA-Z]{2}\d+\s*(\([a-zA-Z]\d\))?/g) //最后在“/”后加个g

其次,match返回的是一个数组。分别用下标表示所返回的东西。

//js中不加序号则输出数组中的数据,用“,”隔开个数据
alert(str.match(regExp)) //输出 WO2012107238 (A1),DE102011011048 (A1)

alert(str.match(regExp)[0]) //输出 WO2012107238 (A1)
alert(str.match(regExp)[1]) //输出 DE102011011048 (A1)

这里你直接返回数组,然后用一个数组变量接值就好。

更要说的就是exec返回的也是数组,[0]返回全匹配结果 [1],[2],[3],……之后的就是在正则中括号内的正则所匹配在子串。exec很强大,但是match足以。

回答2:

楼上说的都对,这里做成一个例子:





回答3:



增加全局判断即可。

回答4:

str=" Also published as: WO2012107238 (A1) DE102011011048 (A1)"
var regExp=new RegExp(/[a-zA-Z]{2}\d+\s*(\([a-zA-Z]\d\))?/g) // g表示全局匹配
//alert(regExp.exec(str));
alert(str.match(regExp)[0]);
alert(str.match(regExp)[1]);