我无法正确使用正则表达式进行验证。需要多个小数,正数,负数和逗号分隔才允许和其他没有。
应该允许:
41.975481,-87.728222,41.974141,-87.721569,41.973247,-87.7135
不应该允许:
41.975481,-87.728222,41.97TEST4141,-87.721569,41.973247,-87.7135,test
这是我正在使用但它允许角色。
(\-?\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,test - 然后测试为有效。它需要错误。
答案 0 :(得分:0)
答案 1 :(得分:0)
ID V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12
ABC 1 2 3 4 1 2 3 NULL 4 1 AB BC
DEF 2 3 NULL 4 2 3 4 1 2 3 AB BC
GHI NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL AB BC
JKL 3 4 1 2 3 4 1 2 3 4 AB BC
MNO 1 2 3 4 1 NULL 2 3 4 1 AB BC
答案 2 :(得分:0)
正则表达式的核心绝对没问题。您遗失的点数在the answer的caeth中给出,但没有解释。
基本上,他在开头添加^
,在结尾添加$
,强制正则表达式匹配整个字,而不仅仅是其中的一部分。根据{{3}}(参考 - >主播)^
如果启用了多行标志(m),[m]会触发字符串的开头或行的开头。这匹配一个位置,而不是一个角色。
熟悉$
(同源)
如果启用了多行标记(m),[m]会触发字符串的结尾或行的结尾。这匹配一个位置,而不是一个角色。
因此,正则表达式的更正(和更清洁)版本将类似于
/^(-?\d+\.\d+)(\s*,\s*-?\d+\.\d+)+$/