l2a*_*lba 5 javascript regex validation url google-maps
我只想检查该链接是否是 Google 地图链接
例如 :
var urls =[
/// correct urls
"https://www.google.com/maps",
"https://www.google.fr/maps",
"https://google.fr/maps",
"http://google.fr/maps",
"https://www.google.de/maps",
"https://www.google.com/maps?ll=37.0625,-95.677068&spn=45.197878,93.076172&t=h&z=4",
"https://www.google.de/maps?ll=37.0625,-95.677068&spn=45.197878,93.076172&t=h&z=4",
"https://www.google.com/maps?ll=37.0625,-95.677068&spn=45.197878,93.076172&t=h&z=4&layer=t&lci=com.panoramio.all,com.google.webcams,weather",
"https://www.google.com/maps?ll=37.370157,0.615234&spn=45.047033,93.076172&t=m&z=4&layer=t",
"https://www.google.com/maps?ll=37.0625,-95.677068&spn=45.197878,93.076172&t=h&z=4",
"https://www.google.de/maps?ll=37.0625,-95.677068&spn=45.197878,93.076172&t=h&z=4",
"https://www.google.com/maps?ll=37.0625,-95.677068&spn=45.197878,93.076172&t=h&z=4&layer=t&lci=com.panoramio.all,com.google.webcams,weather",
"https://www.google.com/maps?ll=37.370157,0.615234&spn=45.047033,93.076172&t=m&z=4&layer=t",
/// error urls
"https://www.google.com/",
"https://zzz.google.com/maps",
"https://www.google.com/+",
"httpsxyz://www.google.com/maps",
"http://www.anotherdomain.com/+"
];
Run Code Online (Sandbox Code Playgroud)
我对正则表达式很不满意,并尝试使用 JavaScript 正则表达式生成器,但它对我来说仍然很难。
我只得到了..
Reg = /^http\:\/\/|https\:\/\/|www\.google$/;
Run Code Online (Sandbox Code Playgroud)
它失败了!:(
但我为大家进行了现场测试:http://jsbin.com/onuyux/1/edit ?javascript,live
编辑:2
在我得到@joel harkes&@dan1111所以我得到了正则表达式的帮助之后
/^https?\:\/\/(www\.)?google\.[a-z]+\/maps\b/
Run Code Online (Sandbox Code Playgroud)
这只是正则表达式google.{TLD}/maps,那么maps.google.{TLD} 又如何呢?
我只想通过这种方式验证 Google 地图 URL 和 URL (看图片)

如果可能的话,我想验证是否设置了地址或长纬度(使用li或q参数检查?)(不仅仅是“maps.google.com”例如..)
更新列表+代码:
/// correct urls
"https://www.google.com/maps?ll=37.0625,-95.677068&spn=45.197878,93.076172&t=h&z=4",
"https://www.google.de/maps?ll=37.0625,-95.677068&spn=45.197878,93.076172&t=h&z=4",
"https://www.google.com/maps?ll=37.0625,-95.677068&spn=45.197878,93.076172&t=h&z=4&layer=t&lci=com.panoramio.all,com.google.webcams,weather",
"https://www.google.com/maps?ll=37.370157,0.615234&spn=45.047033,93.076172&t=m&z=4&layer=t",
"https://maps.google.com/maps?q=New+York,+NY,+USA&hl=no&sll=19.808054,-63.720703&sspn=54.337928,93.076172&oq=n&hnear=New+York&t=m&z=10",
"https://www.google.com/maps?q=New+York,+New+York,+USA&hl=no&ll=40.683762,-73.925629&spn=0.708146,1.454315&sll=41.47566,-72.026367&sspn=11.190693,23.269043&oq=new&hnear=New+York&t=m&z=10",
/// error urls
"https://www.google.com/",
"https://zzz.google.com/maps",
"https://www.google.com/+",
"httpsxyz://www.google.com/maps",
"http://www.anotherdomain.com/+",
"http://maps.google.com/",
"http://google.com/maps",
"http://google.de/maps",
"?q=New+York,+New+York,+USA&hl=no&ll=40.683762,-73.925629&spn=0.708146,1.454315&sll=41.47566,-72.026367&sspn=11.190693,23.269043&oq=new&hnear=New+York&t=m&z=10",
"&sll=41.47566,-72.026367&sspn=11.190693,23.269043&oq=new&hnear=New+York&t=m&z=10"
Run Code Online (Sandbox Code Playgroud)
完成dan1111的答案是一个模式,它将匹配指定的域并检查是否设置了 ll GET 变量:
Reg = /^https?\:\/\/(www\.)?google\.[a-z]+\/maps\/?\?([^&]+&)*(ll=-?[0-9]{1,2}\.[0-9]+,-?[0-9]{1,2}\.[0-9]+|q=[^&+])+($|&)/;
Run Code Online (Sandbox Code Playgroud)
我无法测试它(jsbin 已关闭),但它应该与至少包含 ll 或 q 参数之一的任何 url 匹配。
编辑:
我添加了地图。子域并修复了一个小错字。在q=应该+在字符类之外,让它重复:q=[^&]+而不是q=[^&+]。话虽这么说,这是你的正则表达式:
Reg = /^https?\:\/\/(www\.|maps\.)?google\.[a-z]+\/maps\/?\?([^&]+&)*(ll=-?[0-9]{1,2}\.[0-9]+,-?[0-9]{1,2}\.[0-9]+|q=[^&]+)+($|&)/;
Run Code Online (Sandbox Code Playgroud)
编辑2:
要接受 google.co.uk 样式域,请使用以下正则表达式。
Reg = /^https?\:\/\/(www\.|maps\.)?google(\.[a-z]+){1,2}\/maps\/?\?([^&]+&)*(ll=-?[0-9]{1,2}\.[0-9]+,-?[0-9]{1,2}\.[0-9]+|q=[^&]+)+($|&)/;
Run Code Online (Sandbox Code Playgroud)
希望它现在能够覆盖所有网址。
| 归档时间: |
|
| 查看次数: |
7684 次 |
| 最近记录: |