PHP Regex:or 子句不起作用



我需要编写一个正则表达式来进行仔细检查:如果字符串在开头、结尾包含空格,如果所有字符串都由空格组成,并且如果字符串仅包含数字。我已经写了这个正则表达式

 $regex = '/^(s+ )| ^(d+)$/';

但它不起作用。怎么了?

首先要做的是:把你的空间做好!
例如(s+ )将匹配至少一个空格 ( s+ ) 后跟另一个空格 ()!这同样适用于 ^s+.* 之间的空间。这样,您每次都会匹配空间,这会导致错误的结果。

如果我做对了,你想匹配字符串

  • 以一个或多个空格开头,或
  • 以一个或多个空格结尾,或
  • 仅包含空格或
  • 仅由数字组成

我会用

/^(?:s+.*|.*s+$|d+$)/

演示 @ 正则表达式101

这样就可以匹配字符串开头的空格(|)或字符串末尾的(.*s+$)空格(d+$)或完全数字的字符串(^(d+))。
根据需要插入捕获组。

如果整个字符串也由空格组成,这将匹配,因为从技术上讲,字符串以空格开头。

CC_10 前面的空格使您的正则表达式无法捕获数字字符串。

它应该如下所示:

$regex = '/^s*d*s*$/';

首先,如果全部,请删除 | 和 ^ 之间的空格。您正在尝试匹配行首 (^) 之前的空格,因此无法正常工作。

我不完全明白你想要什么。是仅由空格组成的字符串,还是开头或结尾可能有空格的数字?试试这个:

$regex = '/^s*d*s*$/';

最新更新