Regex匹配一个单词,即使字母之间有空格


Regex to match a word, even is there are spaces between letters

我希望有一个正则表达式来匹配一个单词,即使字符之间有空格。当我想匹配单词test时,它应该匹配以下内容:

test t est t e s t

等等,但它不应该匹配这样的东西:

tste te ts s tet

我有一个正则表达式:(t['s]*e['s]*s['s]*t['s]*)但是我不相信这个是非常有效的。

这是匹配此类单词的唯一方法。你必须消耗这些空间,否则你就没有对手了。实际上,你的模式和是一样的

t's*e's*s's*t

如果单词出现在一个较大的字符串中,您可以考虑使用单词边界版本:

'bt's*e's*s's*t'b

注意:如果每个字母之间只允许有一个空格,则可以使用?量词而不是*:

t's?e's?s's?t

为什么不从输入中删除所有水平空格,然后匹配regex:

$input = 't e s t';
$regex = '/'btest'b/i';
preg_match($regex, preg_replace('/'h+/', '', $input), $m);