所以我遇到了问题。使用我的RegEx代码。所以我尝试建立一个通知系统,并希望使其更具视觉效果。我之前编写的代码的问题是,它可以工作,但只要你有空间。如果你没有它,它将无法正常工作。因此,'@test '
可以正常工作,但不会'@test'
或'@test.'
,如何在找到该单词后停止RegEx?
$str = preg_replace("/@(.*?) /", '<span class="label label-default">$1</span>', $str);
答案 0 :(得分:2)
要替换不包含任何空格的单个字符串,请使用
@\S+
如果您只想允许字母,请使用:
@[a-zA-Z]+
如果您还想允许数字,请使用:
@[a-zA-Z0-9]+
根据您喜欢的选项,您的PHP会变成:
$str = preg_replace("/@([a-zA-Z]+)/", '<span class="label label-default">$1</span>', $str);
<强>解释强>
\S
表示一个不是空白字符的字符[a-zA-Z]
是一个字符类,允许范围a-z
或A-Z
+
量词表示前一个令牌或组的“一个或多个”答案 1 :(得分:1)
我已经解决了,它是否有效,但只要你有空间。如果你没有它将无法正常工作
因为你的正则表达式模式中有额外的空格
/@(.*?) /
^^^
如何在找到单词后停止RegEx?
您可以使用/@([a-zA-Z]+)/
仅匹配大写和小写字母。
答案 2 :(得分:1)
为什么不搜索&#34;不是空格&#34;多次?
/@[^ ]+/
此外,*
表示0到无穷大时间。因此,?
.*?