匹配单词的正则表达式,即使字母之间有空格

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

为什么不从输入中删除所有水平空格然后匹配正则表达式:

$input = 't e s t';
$regex = '/\btest\b/i';

preg_match($regex, preg_replace('/\h+/', '', $input), $m);