2

阅读此处的帖子后,我尝试通过正则表达式获取值,如下所示:

var myString = "<a href='/search.html?id=HDJ&area=ASD&estate=JKG&ppt=3'></a>";
var myRegexp = /&estate=(.*?)(?:\s|$)/g;
var match = myRegexp.exec(myString);
match[1]

结果是JKG&propertytype=3'></a>,但我只想JKG。严格来说,我想要 和 之间的值&estate=有人&ppt可以建议如何做到这一点吗?

谢谢

4

5 回答 5

2

做:

var myString = "<a href='/search.html?id=HDJ&area=ASD&estate=JKG&ppt=3'></a>";
var myRegexp = /estate=(.*)&ppt=/g;
var match = myRegexp.exec(myString);
console.log( match[1] );
于 2013-01-02T05:11:42.767 回答
2

正则表达式:

/&estate=(.*?)&ppt=/g

注意:我不建议使用正则表达式来解析查询字符串。它很脆。考虑查询字符串中的变量是否更改顺序。如果是这种情况,我建议阅读 - Parse query string in JavaScript

于 2013-01-02T05:10:41.863 回答
1

如果只有解决方案很重要,那么您可以使用以下内容:

var myString = "<a href='/search.html?id=HDJ&area=ASD&estate=JKG&ppt=3'></a>";
var indx1 = mystring.indexOf("&estate=") + 8;
var indx2 = mystring.indexOf("&ppt");
var neededString = mystring.substring(indx1, indx2);
于 2013-01-02T06:00:17.660 回答
0

jsFiddle

根据您的结果值,只需split将其放在与号处,不需要新的或备用的正则表达式。

JavaScript:

var myString = "<a href='/search.html?id=HDJ&area=ASD&estate=JKG&ppt=3'></a>";
var myRegexp = /&estate=(.*?)(?:\s|$)/g;
var match = myRegexp.exec(myString);

var value = match[1].split('&')[0];

alert( value );
于 2013-01-02T05:19:23.053 回答
0

只需从选择中排除&符号:

var myRegexp = /&estate=([^&]+)/g;

您可能希望将其更改为此,以防房地产是第一个参数:

var myRegexp = /[\?&]estate=([^&]+)/g;
于 2013-01-02T05:13:18.757 回答