简单地说,我拉出一个链接的href prop,需要在点击时用新链接替换它。新链接需要原始链接中的1个参数(声明链接打开一个新窗口并为用户声明任务)。
到目前为止,我有一个 工作 解决方案。我想要的是有人可以帮我改进我的 RegEx 。
对于以下链接:
/crm/v2/claimTask?email=example@gmail.com&id=1372365392-1UsIvb-0002qr-Sz
我用:
$(this).prop("href").match(/(email|order|phone|num)=\s*?(.+)&/)[0].replace(/&/, '')
得到:
email=example@gmail.com
我想要做的是能够删除.replace(/&/, '')
并让正则表达式停在&
符号开头,但我不确定如何执行此操作。有什么想法吗?
进一步的例子:
/crm/v2/claimTask?order=123456&id=137236456452-1UweRRwvb-00456jr-Sz
/crm/v2/claimTask?phone=6665554444&id=175655392-4WERTe4-097qt-Da
/crm/v2/claimTask?num=6665554444&id=1372234392-9sfaWa-12374ip-eW
/crm/v2/claimTask?email=email@test.net&id=133453465392-k0wS24S-36735qr-rt
使用:
$(this).prop("href").match(/(email|order|phone|num)=\s*?(.+)&/)
会屈服:
order=123456&
phone=6665554444&
num=6665554444&
email=email@test.net&
答案 0 :(得分:2)
试试这个:
$(this).prop("href").match(/((email|order|phone|num)=\s*?(.+))&/)[1] //"email=email@test.net"
$(this).prop("href").match(/((email|order|phone|num)=\s*?(.+))&/)[3] //"email@test.net"
以上只是将没有&
的部分放入捕获组。你也可以使用积极的前瞻:
$(this).prop("href").match(/(email|order|phone|num)=\s*?(.+)(?=&)/) //["email=email@test.net", "email", "email@test.net"]
答案 1 :(得分:1)
只需使用前瞻:
(email|order|phone|num)=\s*?(.+)(?=&)
它不会“吃掉”&符号。