Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regex to Match White Space or End of String

I'm trying to find every instance of @username in comment text and replace it with a link. Here's my PHP so far:

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

The only problem is the regex is dependent upon there being whitespace after the @username reference. Can anyone help me tweak this so it will also match if it is at the end of the string?

like image 682
Kirk Ouimet Avatar asked Mar 22 '10 07:03

Kirk Ouimet


2 Answers

To detect whitespace or end of string, you would use: /@(.+?)(?=\s|$)/, but unless your usernames contain non-alphanumeric characters, it's simpler to use the \w for word character or \b for word break, i.e.: /@(.+?)\b/ or /@(\w)+/.

like image 145
Max Shawabkeh Avatar answered Oct 15 '22 22:10

Max Shawabkeh


try /@(\w+)/ instead of /@(.+?)\s/.

like image 20
J-16 SDiZ Avatar answered Oct 15 '22 23:10

J-16 SDiZ