来自Uri的正则表达式特定Param

时间:2013-07-03 15:21:06

标签: regex

简单地说,我拉出一个链接的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&

2 个答案:

答案 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*?(.+)(?=&)

它不会“吃掉”&符号。