用正则表达式取一些字符串

时间:2014-12-17 12:00:40

标签: javascript regex

在Javascript中我尝试阅读window.location.search。此变量的值可能类似于?ref=somestring&read=1?read=1&ref=sometring或仅?ref=somestring

如何从变量中仅提取ref=somestring

到目前为止,我尝试了以下正则表达式:

ref.match(/ref=([^\&].*)\&/) // works when ?ref=somestring&read=1
ref.match(/ref=([^\&].*)\&/) // not working when only ?ref=somestring
ref.match(/ref=([^\&].*)\&?/) // works when ?ref=somestring
ref.match(/ref=([^\&].*)\&?/) // works but took all part if ?ref=somestring&read=1

2 个答案:

答案 0 :(得分:4)

您可以使用:

var m = (ref.match(/[?&](ref[^&]+)/) || ['', ''])[1];

RegEx Demo

此正则表达式第一次匹配:?&后跟文字ref=,后跟[^&]+,组ref[^&]+#1

答案 1 :(得分:0)

尝试

ref.match(/(ref=[^\&]*)/) //for ref=somestring

ref.match(/ref=([^\&]*)/) //for somestring

REGEX DEMO