我希望有一个正则表达式匹配一个单词,即使字符之间有空格。
当我想匹配单词test
时,它应符合以下内容:
test
t est
t e s t
等等,但不应该匹配这样的事情:
tste
te ts
s tet
我有这个正则表达式:
(t[\s]*e[\s]*s[\s]*t[\s]*)
但我不相信这个非常有效。
答案 0 :(得分:1)
实际上,它与t\s*e\s*s\s*t
相同(如果单词出现在较大的字符串中,则\bt\s*e\s*s\s*t\b
更可取)。这是匹配这些单词的唯一方法。你必须消耗这些空格,否则就不会有匹配。
答案 1 :(得分:1)
为什么不从输入中删除所有水平空格然后匹配正则表达式:
$input = 't e s t';
$regex = '/\btest\b/i';
preg_match($regex, preg_replace('/\h+/', '', $input), $m);