带匹配的Javascript正则表达式

带匹配的Javascript正则表达式,javascript,regex,Javascript,Regex,我正试图用正则表达式从字符串中提取一个数字,因为我被告知这将是我想要做的最好的方法 以下是字符串: http://domain.com/uploads/2011/09/1142_GF-757-S-white.jpg&h=208&w=347&zc=1&q=90&a=c&s=&f=&cc=&ct= 我试着从字符串中提取208。因此,我知道我必须在表达式中查找“&h=”,但我不知道之后该怎么办。我怎样才能在那个和下一个“&”之间

我正试图用正则表达式从字符串中提取一个数字,因为我被告知这将是我想要做的最好的方法

以下是字符串:

http://domain.com/uploads/2011/09/1142_GF-757-S-white.jpg&h=208&w=347&zc=1&q=90&a=c&s=&f=&cc=&ct=
我试着从字符串中提取208。因此,我知道我必须在表达式中查找“&h=”,但我不知道之后该怎么办。我怎样才能在那个和下一个“&”之间匹配,但不包括它们


感谢..

正则表达式匹配包含整数值的
h
url参数

[&?]h=(\d+)
Javascript:

var match = /[&?]h=(\d+)/.exec(url_string);
alert(match[1]);

了解有关。

正则表达式的详细信息,以匹配包含整数值的
h
url参数

[&?]h=(\d+)
Javascript:

var match = /[&?]h=(\d+)/.exec(url_string);
alert(match[1]);

了解更多信息。

要获取整个
h=xxxx
参数,您可以使用此通用函数(可在其他地方重复使用此函数用于其他目的)并将所需的键传递给它:

function getParameterFromURL(url, key) {
    var re = new RegExp("[&?]" + key + "=([^&]*)");
    var matches = url.match(re);
    if (matches) {
        return(matches[1]);
    }
    return(null);
}


var url = "http://domain.com/uploads/2011/09/1142_GF-757-S-white.jpg&h=208&w=347&zc=1&q=90&a=c&s=&f=&cc=&ct=";
var parm = getParameterFromURL(url, "h");

请参阅以获取一个工作演示。

要获取整个
h=xxxx
参数,您可以使用此通用函数(可以在其他地方重复使用该函数用于其他目的)并将所需的键传递给它:

function getParameterFromURL(url, key) {
    var re = new RegExp("[&?]" + key + "=([^&]*)");
    var matches = url.match(re);
    if (matches) {
        return(matches[1]);
    }
    return(null);
}


var url = "http://domain.com/uploads/2011/09/1142_GF-757-S-white.jpg&h=208&w=347&zc=1&q=90&a=c&s=&f=&cc=&ct=";
var parm = getParameterFromURL(url, "h");

有关工作演示,请参阅。

var height=/[&?]h=(\d+)/.exec(字符串);高度=高度?高度[1]:''
当匹配无效时,
height
null
,并返回一个空字符串。当找到匹配项时,
match[1]
保存所有数字。不过这是一根绳子。如果希望它是一个数字,请在其前面加上
+
(或选择您喜欢的任何其他数字转换方法)。
var height=/[&?]h=(\d+/.exec(string);高度=高度?高度[1]:''
当匹配无效时,
height
null
,并返回一个空字符串。当找到匹配项时,
match[1]
保存所有数字。不过这是一根绳子。如果您希望它是一个数字,请在它前面加上
+
(或者选择您喜欢的任何其他数字转换方法)。只获取数字不应该是
match[1]
?[&?]h=(\d+)这似乎也会拉出&h=,而不仅仅是数字。有什么想法吗?像这样做有什么害处吗var match=string.match(/[&?]h=(\d+);警报(匹配[1])@Rick代码是正确的,只是显示了错误的值。在索引0处,您将获得整个匹配,而在本例中,这不是您想要的。您对索引1中的值感兴趣。查看更新后的代码,它应该是您所需要的。@Rick注意,如果没有匹配,变量
match
将为空,对
match[1]
的任何引用都将导致类型错误。如果只获取数字,不应该是
match[1]
?[&]h=(\d+)这似乎也把&h=拉了出来……不仅仅是数字。有什么想法吗?像这样做有什么害处吗?var match=string.match(/[&?]h=(\d+/);警报(匹配[1])@Rick代码是正确的,只是显示了错误的值。在索引0处,您将获得整个匹配,而在本例中,这不是您想要的。您对索引1中的值感兴趣。查看更新的代码,它应该是您所需要的。@Rick注意,如果没有匹配项,变量
match
将为null,对
match[1]
的任何引用都将导致类型错误为什么在
返回(null)处使用括号
返回(匹配[1])?@some-围绕返回值使用paren是一种个人风格。有一些复杂的语句需要paren来指导JS引擎做正确的事情,所以我习惯于总是使用paren。当返回值很简单时,它们不是必需的。@jfriend00好的,我理解。自动插入分号是一个敌人。为什么在
return(null)处使用括号
返回(匹配[1])?@some-围绕返回值使用paren是一种个人风格。有一些复杂的语句需要paren来指导JS引擎做正确的事情,所以我习惯于总是使用paren。当返回值很简单时,它们不是必需的。@jfriend00好的,我理解。自动插入分号是一个敌人。