Validate the string using the regex which has the - (hypen)
Requirement is : string contains only digits and - (hyphens) and not end with - (hyphen) and all other digits not be the same.
^([0-9-])(?!\1 $)[0-9-]{5}$
The above one allow only digits and hyphen but its not restricted end with hyphen and check all other digits are same.
ex:
1111-1 Not allowed because all are same digits
1111-2 Allowed
11112- Not allowed as its end with - Hypen
-12345 Not allowed as its start with - hypen
CodePudding user response:
You might write the pattern as
^(\d)(?!(?:\1|-) $)(?!\d*-\d*-)[\d-]{4}\d$
Explanation
^Start of string(\d)Capture a single digit in group 1(?!Negative lookahead(?:\1|-) $Check that to the right there is not only the group 1 value or hyphens
(?!\d*-\d*-)Assert not 2 hyphens)Close lookahead[\d-]{4}Match 4 digits or hyphens\dMatch a digit$End of string
If there should be at least 1 hyphen:
^(\d)(?!(?:\1|-) $)(?=\d*-)[\d-]{4}\d$
CodePudding user response:
My 2 cents to allow [01] hyphens:
^(?=.{6}$)(\d)(?=.*(?!\1)\d)\d (?:-\d )?$
See an online demo
