I need help finding a regex that will allow most strings, except:
- if the string only contains whitespaces
- if the string contains
:or*
I want to reject the following strings:
"hello:world""hello*world"" "(just a whitespace)
But the following strings will pass:
"hello world""hello"
So far, I can accomplish what I want... in two patterns.
[^:*]*rejects the 2 special characters.*\S.*rejects any string with only whitespaces
I'm not sure how to combine these two patterns into one...
I'll be using the regex pattern along with Java.
CodePudding user response:
An example of how you could combine your two patterns for use with the matches method:
"[^:*]*[^:*\\s][^:*]*"
[^\s] is equivalent to \S.
CodePudding user response:
You could use a negative lookahead:
^(?!\s*$)[^:*] $
^- start of string anchor(?!\s*$)negative lookahead rejecting whitespace-only strings[^:*]- one or more of any character except:and*$- end of string anchor
