js正则表达式截取字符串数组

var str = 'ssssss w11112131 sssss w22222 asssssssss w33333 sssssssss';

var p = /w\d*/;
var s ="";

s = str.match(p);
alert(s+""+"==="+s[0]+"==="+s[1]+"==="+s[2]+"===");
输出结果 : w11112131===w11112131===undefined===undefined===
我想要的结果 : w11112131===w22222===w33333===
var p = /w\d*/g;
以解决
最新回答
少年先疯队队长

2022-11-02 18:31:42

错了好几个地方啊,第一:正则不是全局的,第二:返回的数组中,第一组(下标为 0 的)为整个正则匹配的结果,第三:js 的正则在匹配成功后就返回,后面的要再次调用!

var str = 'ssssss w11112131 sssss  w22222 asssssssss w33333 sssssssss';

var p = /w\d*/g;
var s = [], m;

while(m = p.exec(str)){
s.push(m[0])
}
alert("===" + s[0] + "===" + s[1] + "===" + s[2] + "===");
草莓少女自然甜

2023-08-21 16:50:28

我也想到了,加个g表示全文搜索,不加只搜索一次就返回了。