我需要编写一个正则表达式来进行仔细检查:如果字符串在开头、结尾包含空格,如果所有字符串都由空格组成,并且如果字符串仅包含数字。我已经写了这个正则表达式
$regex = '/^(s+ )| ^(d+)$/';
但它不起作用。怎么了?
首先要做的是:把你的空间做好!
例如(s+ )
将匹配至少一个空格 ( s+
) 后跟另一个空格 ()!这同样适用于
^
和 s+.*
之间的空间。这样,您每次都会匹配空间,这会导致错误的结果。
如果我做对了,你想匹配字符串
- 以一个或多个空格开头,或
- 以一个或多个空格结尾,或
- 仅包含空格或
- 仅由数字组成
我会用
/^(?:s+.*|.*s+$|d+$)/
演示 @ 正则表达式101
这样就可以匹配字符串开头的空格(|
)或字符串末尾的(.*s+$
)空格(d+$
)或完全数字的字符串(^(d+)
)。
根据需要插入捕获组。
如果整个字符串也由空格组成,这将匹配,因为从技术上讲,字符串以空格开头。
CC_10 前面的空格使您的正则表达式无法捕获数字字符串。
它应该如下所示:
$regex = '/^s*d*s*$/';
首先,如果全部,请删除 | 和 ^ 之间的空格。您正在尝试匹配行首 (^) 之前的空格,因此无法正常工作。
我不完全明白你想要什么。是仅由空格组成的字符串,还是开头或结尾可能有空格的数字?试试这个:
$regex = '/^s*d*s*$/';