我有这个简单的正则表达式来验证坐标:^([0-9.,-]+){18,20}$^
。如果坐标例如是33.431441,-170.15625并且小于18个字符,我将收到一条错误消息。好!但是如果我添加更多的字符来表示23或更多,即使我已将锁定设置为20,它也会通过。
您可以在http://regexpal.com/上测试正则表达式。
如何解决此问题?
提前致谢。
答案 0 :(得分:5)
你需要领先的克拉,或者你只是检查字符串中的最后18-20个字符:
/^[0-9\.,-]{18,20}$/
编辑:同样,放弃加号,正如其他人注意到的那样 编辑2:Parens是多余的 Edit3:需要转义句点(否则,它匹配任何字符)
答案 1 :(得分:2)
应该只是^([0-9.,-]){18,20}$
。 +
表示一个或多个前面的元素,然后你有18到20个那些。你只需要18到20个前面的元素。您最后不需要插入符号,因为这意味着“字符串的开头”
答案 2 :(得分:0)
如果您想限制限制并验证坐标格式,请提供以下建议。
假设Lat,Long:
^-?\d{1,2}(\.\d{1,5})?,-?\d{1,3}(\.\d{1,5})?$
逗号将始终消耗1个字符。 最大经度主要数字为3个字符。 最大纬度主要数字是2个字符。 可选的小数点占用2个字符。 可选极性为2个字符。
这使我们保留了10个字符,在每一侧为小数位数留下了5个字符。您可以将\ d {1,5}调整为\ d {4,5},并在需要至少18的情况下强制执行小数位。