如何使用正则表达式验证这些文本字段的纬度和经度并显示错误消息?
<div class="form_style">
<fieldset>
<label for="contentText" class="fixedwidth">Name:</label>
<input type="text" name="content_txt" id="contentText" class="inputtext" ><br/>
</fieldset>
<fieldset>
<label for="address" class="fixedwidth">Address:</label>
<input type="text" id="address"class="inputtext" /><br/>
</fieldset>
<fieldset>
<label for="lat" class="fixedwidth">Lat:</label>
<input type="text" id="lat"class="inputtext" /><br/>
</fieldset>
<fieldset>
<label for="lng" class="fixedwidth">Lng:</label>
<input type="text" name="lng" id="lng"class="inputtext" /><br/>
</fieldset>
<fieldset>
<label for="type" class="fixedwidth">Type:</label>
<input type="text" id="type"class="inputtext" /><br/>
</fieldset>
<button id="FormSubmit">Add Marker</button>
</div>
答案 0 :(得分:15)
<script type="text/javascript">
var latitude = document.getElementById(lat).value;
var longitude = document.getElementById(lng).value;
var reg = new RegExp("^-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,6}");
if( reg.exec(latitude) ) {
//do nothing
} else {
//error
}
if( reg.exec(longitude) ) {
//do nothing
} else {
//error
}
</script>
答案 1 :(得分:12)
请在此处测试您的正则表达式:
^-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,6}
在这种情况下,正则表达式将匹配一个负数或正数的数字(1个数字排除'0'和'0')或(一个或两个数字,第一个除9以外,都排除'0 '),后跟一个小数点和最多6个其他数字。如果那就是你需要的,那么是的,这会有效。如果您需要不同的格式,请将其发布在评论中,我会尝试使用正确的正则表达式。
谷歌搜索“正则表达式”应该为您提供所需的所有信息。
如果你只需要-90到90之间的数字(或-180和180),你就可以这样做:
if (typeof num === 'number' && num <= 90 && num >= -90)
//valid
else
//invalid
如果你需要像°(度)或罗盘方向这样的符号,那么正则表达式可能是有益的。
以下是几种格式的评论:
答案 2 :(得分:0)
我为每个值使用了两个不同的正则表达式。
Latiude正则表达式:
const latRegex = /^-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,15}/g;
经度正则表达式:
const lngRegex = /^-?(([-+]?)([\d]{1,3})((\.)(\d+))?)/g;
答案 3 :(得分:0)
就这样做:
function isLatitude(lat) {
return isFinite(lat) && Math.abs(lat) <= 90;
}
function isLongitude(lng) {
return isFinite(lng) && Math.abs(lng) <= 180;
}