正则表达式 - 单词匹配和特殊字符

时间:2016-09-23 09:14:01

标签: php regex preg-replace

我希望匹配一个未被任何letternumberspecial character等包围的单词。我想要的示例:

Word是:Hello

我使用的正则表达式示例:/\bHello\b/i

我要使用该正则表达式的PHP代码:

$text = preg_replace('/\bHello\b/i',"some img url",$text);

结果:

hello    # match          *(that's ok)*

hellos   # no match       *(that's ok)*

hello3   # no match       *(that's ok)*

1hello   # no match       *(that's ok)*

shello   # no match       *(that's ok)*

$hello#  # match          *(that's not ok. I don't want matching!)*

hello#   # match          *(that's not ok. I don't want matching!)* 

我希望仅在字词未被任何其他letternumberSPECIAL CHARACTER包围时匹配。

Word边界适用于字母和数字,但WordB不适用于特殊字符,我想要像WordB这样的东西。也适用于特殊字符...

我试过这个"/(^|\s)Hello($|\s)/i",但那不是..

2 个答案:

答案 0 :(得分:1)

正则表达式:

/(?<!\S)hello(?!\S)/i

PHP:

$text = preg_replace('/(?<!\S)hello(?!\S)/i', "some img url", $text);

您应检查下一个或上一个字符是否不是非空格字符。单词边界仅适用于除[0-9a-zA-Z_]个字符(或任何语言中的任何单词字符)之外的边界

答案 1 :(得分:0)

  

没有字母,数字,特殊字符

如果这只是意味着&#34;你好&#34;然后使用:

/^hello$/gi

demo

相关问题