Reputation: 39364
I have a Regex to allow alphanumeric, underscore and dots but not consecutive dots:
^(?!.*?[.]{2})[a-zA-Z0-9_.]+$
I also need to now allow dots in the first and last character of the string.
How can I do this?
Upvotes: 14
Views: 22005
Reputation: 785058
You can use it like this with additional lookaheads:
^(?!\.)(?!.*\.$)(?!.*\.\.)[a-zA-Z0-9_.]+$
(?!\.)
- don't allow .
at start(?!.*\.\.)
- don't allow 2 consecutive dots(?!.*\.$)
- don't allow .
at endUpvotes: 36
Reputation: 10466
You can try this:
^(?!.*\.\.)[A-Za-z0-9_.]+$
This will not allow any consecutive dots in the string and will also allow dot as first and last character
Upvotes: 0
Reputation: 626747
Re-write the regex as
^[a-zA-Z0-9_]+(?:\.[a-zA-Z0-9_]+)*$
or (in case your regex flavor is ECMAScript compliant where \w
= [a-zA-Z0-9_]
):
^\w+(?:\.\w+)*$
See the regex demo
Details:
^
- start of string[a-zA-Z0-9_]+
- 1 or more word chars (?:\.[a-zA-Z0-9_]+)*
- zero or more sequences of:
\.
- a dot[a-zA-Z0-9_]+
- 1 or more word chars$
- end of stringUpvotes: 3