8

I need to make a regular expression that matches something like:

JG2144-141/hello

or

!

but not:

laptop bag

or a string consisting of whitespace chars only (' ').

Right now I have [A-Za-z0-9-!/\S], but it isn't working because it still matches with laptop and bag individually. It shouldn't match laptop bag and the empty string at all.

Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563
Jennifer Hall
  • 81
  • 1
  • 1
  • 4

1 Answers1

12

In general, to match any non-whitespace char, you can use

\S              # Common modern regex flavors
[^[:space:]]    # POSIX compliant
[[:^space:]]    # POSIX extension (available in some flavors)
%S              # Lua patterns

The \S in [A-Za-z0-9-!/\S] makes this character class equal to \S, but you want to make sure all chars in the string are non-whitespace chars. That is why you should wrap the pattern with ^ and $ anchors and add a + quantifier after \S to match 1 or more occurrences of this subpattern.

You may use

^\S+$

See the regex demo

Details

  • ^ - start of string
  • \S+ - 1 or more non-whitespace chars
  • $ - end of string.
Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563