使用正则表达式匹配字符串

时间:2014-04-22 13:19:58

标签: javascript jquery

我有以下字符串

name=cvbb&source=Mamma+Mia&startdate=2014-03-24

如何将与name关联的值与正则表达式匹配,即字符串" cvbb"

/ [^ name] = [^&] / matches = cvbb但我只想要cvbb

3 个答案:

答案 0 :(得分:0)

看起来你想获得URL参数值?在这种情况下,您可以使用此功能:

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var value = getParameterByName('startdate');

这会将2014-03-24放入名为value

的var中

答案 1 :(得分:0)

我假设您要选择名称,对吗?为此,您可以使用表达式: -

/name=([\w]+)&source=.*/

说明:第一个单词名称就在那里。之后([\ w] +)将匹配一个字母数字字符列表。然后&会来阻止我们的选择。如果要检查字符串是否以name开头,请使用

/^name=([\w]+)&source=.*/

注意:使用[^ name]表示字符不应该是n,a,m或e,而不是您要检查的字符。我希望这有帮助。

答案 2 :(得分:0)

var queryString = 'name=cvbb&source=Mamma+Mia&startdate=2014-03-24';
var theStringImAfter = queryString.match(/[?&]name=([^&]*)/i)[1]

请注意,queryString可以是完整的网址,例如从window.location.href开始,您不需要先解析查询字符串。

如果您传递的是编码字符串(如果您包含网址中不支持的字符,例如空格,符号或等号等,那么这是常态),您将需要在使用之前对字符串进行解码。这可以使用decodeURIComponent(theStringImAfter)完成。

这是在可重用函数中包含的相同方法

function getArg(url, arg){
    var v=url.match(new RegExp('[?&]' + arg + '=([^&]*)', 'i'));
    return (v)?decodeURIComponent(v[1]):'';
}

用法:

var theStringImAfter = getArg('name=cvbb&source=Mamma+Mia&startdate=2014-03-24', 'name');