[英]php regex: or clause doesn't work
我需要编写一个正则表达式进行仔细检查:字符串是否在开头,结尾都包含空格,并且是否所有字符串都由空格组成,并且字符串是否仅包含数字。 我写了这个正则表达式
$regex = '/^(\s+ )| ^(\d+)$/';
但这行不通。 怎么了 ?
^(\\d+)
之前的空格使您的正则表达式无法捕获数字字符串。
它应该像下面这样:
$regex = '/^\s*\d*\s*$/';
首先,如果要除去|之间的空格。 和^。 您正在尝试在行首(^) 之前匹配一个空格,因此无法正常工作。
我不完全了解您想要什么。 仅包含空格的字符串,还是开头或结尾可能包含空格的数字? 尝试这个:
$regex = '/^\s*\d*\s*$/';
第一件事:正确利用空间!
例如(\\s+ )
至少匹配一个空格( \\s+
),然后再匹配另一个空格( )! 之间的空格也是如此
|
和^
。 这样,您每次都会真正匹配该空间,这将导致错误的结果。
如果我说对了,而您想匹配的字符串
我会用
/^(?:\s+.*|.*\s+$|\d+$)/
这样,您可以匹配字符串开头( \\s+.*
)的空格或字符串( .*\\s+$
)末尾的( |
)空格或完全数字的字符串( \\d+$
)。
根据需要插入捕获组。
如果整个字符串也由空格组成,这将匹配,因为从技术上讲,字符串然后以空格开头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.