gpt4 book ai didi

php - 使用 regex/preg_match() 检查一组十进制坐标是否有效

转载 作者:行者123 更新时间:2023-12-04 15:32:28 26 4
gpt4 key购买 nike

我已经学会了一些基本的正则表达式来弄湿我的脚,但对我来说还是有点太复杂了。我需要获取一组用户输入的十进制度数坐标(示例):

$latitude = -42.323432$longitude = 176.232123

并使用 PHP 中的 preg_match() 函数检查它们是否有效。看起来很简单,但我无法为我的生活编写正则表达式来确保没有不良数据通过。我将分别检查北向和东向,这样 preg_match() 将使用 foreach 循环迭代两次。

我想我已经弄清楚了所有必要的条件:

  • 第一个字符可以是减号、加号或数字。缺点和优点是可选的。
  • 小数点前的总个数可以是1到3,但不能是0和3以上。
  • 因此第二位或第四位必须有小数点。 (2.2332, -123.422)
  • 整个字符串中必须恰好有一位小数点,整个字符串中可以有 0 或 1 个减号或加号。
  • 我希望小数点后至少保留 3 位小数。没有最大限制(我自己将其四舍五入为 6 dp)
  • 如果除了数字、小数点和可选的加号和减号之外还有任何字符,则拒绝它。

虽然在这之后,我被卡住了!在编写正则表达式时,我们将不胜感激。谢谢...

最佳答案

让我们试一试:

  /^[+\-]?[0-9]{1,3}\.[0-9]{3,}\z/

分割:

  ^                 - start of string
[+\-]? - zero or one from set of `+` and `-`
[0-9]{1,3} - 1 to 3 digits
\. - decimal point
[0-9]{3,} - 3 or more digits
\z - end of string

(注意,这是未经测试的;))

关于php - 使用 regex/preg_match() 检查一组十进制坐标是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15403654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com