为了账号安全,请及时绑定邮箱和手机立即绑定

正则里的match不能与(?:)一起用吗?

正则里的match不能与(?:)一起用吗?

喵喔喔 2019-02-13 18:19:35
某一个字符串为'a_b_2_d_1'我想匹配到_后面的字母与数字,但是不匹配_,于是我写了:let str = "a_b_2_d_1"let result = str.match(/(?:_)[a-z0-9]+/gi);console.log(result); //["_b", "_2", "_d", "_1"]结果将_也匹配了进去,match是与(?:)不生效呢,还是为什么。如果不用这种方式还能怎么写呢?
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

你可以去查下match的用法,match根据正则表达式里面有没有全局匹配g,会返回不同的结果,如果不是全局匹配,那么返回的结果是数组,第一个元素是匹配的完整字符串,从第二个元素开始是捕获型括号的内容;如果是全局匹配,返回的结果是一个数组,数组的每个元素都是匹配的完整字符串,没有捕获型括号的内容。


使用exec,代码如下:


let str = "a_b_2_d_1"

let re = /(?:_)([a-z0-9]+)/gi

let match

let result = []


while (match = re.exec(str)) {

    result.push(match[1])

}

console.log(result)


查看完整回答
反对 回复 2019-02-22
  • 1 回答
  • 0 关注
  • 349 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号