防止超过 20 个字符数通过验证

  • 本文关键字:验证 字符 php regex
  • 更新时间 :
  • 英文 :


我有这个轻正则表达式来验证坐标:^([0-9.,-]+){18,20}$^ .例如,如果坐标是 33.431441,-170.15625 并且少于 18 个字符,我将收到一条错误消息。好!但是,如果我添加更多字符说 23 或更多,即使我将锁设置为 20,它也会通过。

您可以在 http://regexpal.com/上测试正则表达式。

如何解决此问题?

提前谢谢。

您需要前导克拉,或者只检查字符串中的最后 18-20 个字符:

/^[0-9.,-]{18,20}$/

编辑:另外,正如其他人所指出的那样,删除加号。
编辑2:括号是多余的
Edit3:需要转义句点(否则,它匹配任何字符)

它应该只是^([0-9.,-]){18,20}$ .+表示上述一个或多个元素,然后您有 18 到 20 个元素。您只需要上述元素中的 18 到 20 个。您不需要末尾的插入符号,因为这意味着"字符串的开头"

如果要

限制限制并验证坐标格式,这里有一个建议。

假设纬度,经度:

^-?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,则强制使用小数位。

最新更新