1

简单地说,我拉了一个链接的 href 属性,点击时需要用新链接替换它。新链接需要原始链接中的 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&
4

2 回答 2

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"]
于 2013-07-03T15:36:04.463 回答
1

只需使用前瞻: (email|order|phone|num)=\s*?(.+)(?=&)

它不会“吃掉”&符号。

于 2013-07-03T15:38:52.833 回答