0

How can you tell if a string has only a username and not any other text (e.g. "@username" OR "@username " RATHER THAN "@username text")

Philipp Maurer
  • 2,480
  • 6
  • 18
  • 25
Thomas George
  • 76
  • 1
  • 6
  • 2
    Personally, for usernames I'd use a regular expression that limits user input to only certain allowed characters. – rickdenhaan Jan 15 '18 at 22:23

1 Answers1

3

Use a regular expression that looks for @[A-Za-z]+

That'll just match letters... if you need to allow numbers and underscores, you'll need something like @[A-Za-z0-9_]+.

To allow zero or more trailing whitespace characters you can add \s*

Wrap in ^ and $ to match the start and end of the string.

Here's the whole regex:

@[A-Za-z0-9_]+\s*

If you need more matchable characters you can add them into the brackets. You may need to escape dash (-) as \- depending where you put it.

If you need just A-Za-z0-9_ then you can shortcut that as \w if you like. Here's the short version:

@\w+\s*

Aside: if you are here from ruby for some reason - be careful with ^ and $ - you should "probably" be using \A and \z instead (see Difference between \A \z and ^ $ in Ruby regular expressions )

Shadow Radiance
  • 1,349
  • 13
  • 20