我需要编写一个正则表达式进行双重检查:如果一个字符串在开头,末尾包含空格,如果所有字符串由空格组成,并且字符串只包含数字。 我写了这个正则表达式
$regex = '/^(\s+ )| ^(\d+)$/';
但它不起作用。怎么了?
答案 0 :(得分:1)
^(\d+)
之前的空格使你的正则表达式无法捕获数字字符串。
应该如下:
$regex = '/^\s*\d*\s*$/';
答案 1 :(得分:1)
首先,如果全部,删除|之间的空格和^。您正尝试在行之前匹配空格(^),以便无法使用。
我并不完全明白你想要什么。一个只包含空格的字符串,或者在开头或结尾可能有空格的数字?试试这个:
$regex = '/^\s*\d*\s*$/';
答案 2 :(得分:1)
首先要做的是:让你的空间正确!
例如,(\s+ )
将匹配至少一个空格(\s+
),后跟另一个空格()!同样适用于
|
和^
之间的空格。这样你每次都会按字面意思匹配空间,这会导致错误的结果。
如果我说得对,你想匹配
的字符串我用
/^(?:\s+.*|.*\s+$|\d+$)/
这样,您可以匹配字符串末尾的字符串(\s+.*
)或(|
)空格开头的空格(.*\s+$
)或完全数字字符串({ {1}})。
根据需要插入捕获组。
如果整个字符串也包含空格,这将匹配,因为从技术上讲,字符串以空格开头。