带匹配的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好的,我理解。自动插入分号是一个敌人。