使用regex / preg_match()检查以十进制度为单位的一组坐标是否有效 - php

我已经学到了一些基本的正则表达式来弄湿我的脚,但是对于我来说,这一切仍然太复杂了。我需要使用一组用户输入的十进制度数坐标(示例):

$ latitude = -42.323432
$经度= 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

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

preg_match不捕获内容 - php

我的preg_match有什么问题?preg_match('numVar("XYZ-(.*)");',$var,$results); 我想从这里获取所有内容:numVar(“ XYZ-CONTENT”);感谢您的任何帮助! 参考方案 我认为这是PHP?如果是这样,则您的代码存在三个问题。PHP的PCRE函数要求使用分隔…

php:拆分字符串,直到第一次出现数字 - php

我有像cream 100G sup 5mg Children 我想在第一次出现数字之前将其拆分。所以结果应该是array( array('cream','100G'), array('sup','5mg Children') ); 可以告诉我如何为此创建图案吗?我试过了list(…

将大字符串分成多个小字符串-PHP - php

我从数据库中获取了一个长字符串,我需要对其进行解析,以使其不包含一个大字符串,而是多个,其中每个字符串都有2个字符。让我们以示例为例:我连接到表,获取此字符串:B1C1F4G6H4I7J1J8L5O6P2Q1R6T5U8V1Z5,之后,我必须对字符串进行解析,因此:B1 C1 F4 G6 H4 I7 J1 J8 L5 O6 P2 Q1 R6 T5 U8 V1…

用户名regex字母数字,仅带下划线 - php

我正在尝试为php的preg_match找到一个正则表达式,该表达式允许带下划线的字母数字字符,但下划线必须位于字符之间(而不是字符串的开头或结尾),并且彼此之间永远不能有2个下划线。例子:无效:_name na_me_ na__me 有效:na_me na_m_e 我发现其中的大部分适用于此功能,但不能避免出现重复的下划线:/^[A-Za-z][A-Za-…

用preg_match()连接正则表达式字符串中的变量 - php

我正在使用preg_match()函数来确定是否执行一个函数。if( preg_match( '/^([0-9]+,){0,3}[0-9]+$/', $string ) ) { ... } 但是我必须使用整数变量并将其集成到正则表达式中:$integer = 4; if( preg_match( '/^([0-9]+,){0,&…