正则表达式匹配空格或字符串结尾

Kir*_*met 9 php regex preg-replace

我试图在评论文本中找到@username的每个实例,并用链接替换它.这是我到目前为止的PHP:

$comment = preg_replace('/@(.+?)\s/', '<a href="/users/${1}/">@${1}</a> ', $comment);
Run Code Online (Sandbox Code Playgroud)

唯一的问题是正则表达式依赖于@username引用之后的空格.任何人都可以帮我调整这个,所以如果它在字符串的末尾也会匹配吗?

Max*_*keh 13

要检测空格或字符串结尾,您可以使用:/@(.+?)(?=\s|$)/,但除非您的用户名包含非字母数字字符,否则使用\w单词字符或\b单词分隔更简单,即:/@(.+?)\b//@(\w)+/.


J-1*_*DiZ 9

尝试/@(\w+)/而不是/@(.+?)\s/.