正则表达式匹配特定的URL JavaScript

时间:2015-10-21 15:44:14

标签: javascript arrays regex

我试图匹配允许我从si获取值的特定网址(http://www.example.me/area/?si=)。 si值将是动态的

http://www.example.me/area/?si=4077765

3 个答案:

答案 0 :(得分:-1)

假设查询字符串中si键的值始终为数字(即:0 - 9),请尝试此操作...

var url = 'http://www.example.me/area/?test=4894&si=4077765&f=fjjjf',
    si = url.match(/.*[\?&]si=(\d+)/i)[1];

或者更通用......

function getQueryStringValue(url, key) {
    var regex = new RegExp('.*[\\?&]' + key + '=(\\d+)', 'i');
    return url.match(regex)[1];
}

如果没有数字试试这个......

/.*[\?&]si=(\w+)/i

<强>解释

  • 。*匹配0和无限次之间的任何字符(换行符除外)
  • [\?&amp;]匹配单个字符?或&amp;
  • si =匹配字符si =字面意思(不区分大小写)
  • (\ d +)首先捕获组。匹配1和无限制时间之间的任何数字[0-9]
  • i modifier - 不区分大小写

regex101

答案 1 :(得分:-1)

获取任何查询字符串值

function qstr(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("="); if (pair[0] == variable) { return pair[1]; } } return false; }

检查查询字符串是否存在

function isset_qstr(field) { var url = vp_furl(); if (url.indexOf('?' + field + '=') != -1) { return true; } else if (url.indexOf('&' + field + '=') != -1) { return true; } return false; }

我认为你需要第一个功能。如果您认为它有用,请投票。

谢谢。祝你好运

答案 2 :(得分:-2)

这样的事情可以解决我的想法:

var regex = /http\:\/\/www\.example\.me\/area\/\?si=(\w*)/;

var url = 'http://www.example.me/area/?si=4077765';
var si = url.match(regex)[1]; // si = '4077765'

正则表达式的第一部分只是你的URL“\”用于转义特殊字符。

(\ d +)是一个捕获组,它匹配来自a-z,A-Z,0-9的所有字符,包括从0到n迭代的_(下划线)字符。