在jQuery中查找两个字符串之间的字符串

时间:2014-09-16 16:58:06

标签: jquery regex

我有一个像这样的静态Google地图:

<img alt="Map" height="135" src="http://maps.google.com/maps/api/staticmap?scale=2&amp;center=45.504358%2C-73.553712&amp;language=en&amp;zoom=15&amp;markers=scale%3A2%7Cshadow%3Afalse%7Cicon%3Ahttp%3A%2F%2Fyelp-images.s3.amazonaws.com%2Fassets%2Fmap-markers%2Fannotation_64x86.png%7C45.504358%2C-73.553712&amp;client=gme-yelp&amp;sensor=false&amp;size=286x135&amp;signature=nM1FwS0L3z_VgK2ljaRcJf11HxA=" width="286">

如何才能获得变量中的部分

var lat = 45.504358;
var lng = -73.553712;

我试过了:

var mapSrc = $(pageDetails).find('[alt="Map"]').prop('src');
var card_Latitude = mapSrc.match(/center=(.*?)%2C-/i)[1];

5 个答案:

答案 0 :(得分:1)

使用JS获取查询字符串参数的通用函数(请参阅此答案):

How can I get query string values in JavaScript?

所以它就像这样:

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

然后在你的特定情况下你就这样称呼它(假设你的img被命名为&#34; img&#34;):

var center = getParameterByName("center",document.getElementById("img").src).split(",");

alert("lat: " + center[0] + " long: " + center[1]);

看到这个小提琴:

http://jsfiddle.net/soemdjah/1

答案 1 :(得分:0)

center=(\d+(?:\.\d+)?)%2C(-?\d+(?:\.\d+)?)

试试这个。看看演示。

http://regex101.com/r/iO1uK1/9

答案 2 :(得分:0)

您可以使用基础javascript RegExp:

var matches = new RegExp('center=(\\d+\\.?\\d*)%2C(-?\\d+\\.?\\d*)').exec(mapSrc);
if (matches) {
    var lat = matches[1];
    var lng = matches[2];
}

答案 3 :(得分:0)

您可以按参数拆分src,然后按每个参数的键/值对拆分,以便在src属性中找到latitudelogitude值。例如:

var mapSrc = $(pageDetails).find('[alt="Map"]').prop('src');
jQuery(mapSrc.split("&"), function(index, value) {
  var keyPair = value.split("=");
  if (keyPair[0] == "center") {
    var lat = decodeURIComponent(keyPair[1]).split(",")[0];
    var lng = decodeURIComponent(keyPair[1]).split(",")[1]
  }
});

使用上面的内容,根本不需要正则表达式。但是,如果您仍希望使用regex执行此任务,则可以使用以下模式:'center=([^%]+)%2C-([^&]+)'

答案 4 :(得分:0)

还有一个解决方案:

;center=( [.\d]+)%?[0-9A-Z]+([-.\d+]+)

演示
http://regex101.com/r/qK0jJ1/2