[英]regex positive negative decimal numbers, comma separated
我在使正則表達式正確進行驗證時遇到麻煩。 需要多個小數點,正數,負數和逗號分隔以允許使用,否則不進行其他操作。
應該允許:
41.975481,-87.728222,41.974141,-87.721569,41.973247,-87.7135
不應允許:
41.975481,-87.728222,41.97TEST4141,-87.721569,41.973247,-87.7135,測試
這是我正在使用的,但允許使用字符。
(\-?\d+(\.\d+))(,\s*(\-?\d+(\.\d+)))*
我想念什么嗎?
$('textarea[name="latlong"]').bind('focusout',function(){
$(".polygon .geoerror").text("");
var polygon = $(this).val();
//remove trailing comma and extra space if its there
polygon = polygon.replace(/,\s*$/, "");
var checkpoly = /(\-?\d+(\.\d+))(,\s*(\-?\d+(\.\d+)))*/;
var evenodd = polygon.split(',').length;
if (checkpoly.test(polygon) && evenodd % 2 == 0) {
$(".polygon .geoerror").text("Polygon string is valid." + polygon);
$(".polygon .geoerror").css("color", "green");
} else if (checkpoly.test(polygon) && evenodd % 2) {
$(".polygon .geoerror").text("Mismatch of lat and long values." + polygon);
$(".polygon .geoerror").css("color", "red");
} else {
$(".polygon .geoerror").text("Not valid." + polygon);
$(".polygon .geoerror").css("color", "red");
}
return false;
});
根據代碼,如果用戶輸入-41.975481,-87.728222、41.974141,-87.721569、41.973247,-87.7135,則測試-然后測試為有效。 它需要出錯。
$('textarea[name="latlong"]').bind('focusout',function(){
$(".polygon .geoerror").text("");
var polygon = $(this).val();
//remove extra space if its there
polygon = polygon.replace(/\s*/g, "");
var nums = polygon.split(',');
var len = nums.length;
var is_even = ( len % 2 == 0 );
if (!is_even) {
$(".polygon .geoerror").text("Mismatch of lat and long values." + polygon);
$(".polygon .geoerror").css("color", "red");
return false;
}
var validNums = true;
for(var i = 0; i < len; i++) {
if(isNaN(nums[i])) {
validNums = false;
break;
}
}
if (validNums) {
$(".polygon .geoerror").text("Polygon string is valid." + polygon);
$(".polygon .geoerror").css("color", "green");
} else {
$(".polygon .geoerror").text("Not valid." + polygon);
$(".polygon .geoerror").css("color", "red");
}
return false;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.