ng-pattern to allow alpha and certain special characters
12,893
Solution 1
Let's see:
-
Should allow only Alpha characters =>
[a-zA-Z]
-
Allow space =>
[ ]
or\s
-
Allow certain special characters -
_ \ / - . ’ '
=>[_\\\/.’'-]
So, combining all that, the pattern will look like:
ng-pattern="/^[a-zA-Z _\\\/.’'-]+$/"
This matches 1 or more (+
) chars from the allowed set.
To disallow leading/trailing whitespace, use
ng-pattern="/^[a-zA-Z_\\\/.’'-]+(?: +[A-Za-z_\\\/.’'-]+)*$/" ng-trim="false"
See the regex demo
The ng-trim="false"
will prevent from trimming the input sent to the regex engine. The new regex will match:
-
^
- start of string -
[a-zA-Z_\\\/.’'-]+
- 1 or more letters or allowed symbols other than space -
(?: +[A-Za-z_\\\/.’'-]+)*
- zero or more sequences of:-
+
- (or,\s+
) - 1 or more spaces (whitespaces) -
[A-Za-z_\\\/.’'-]+
- see above
-
-
$
- end of string.
Solution 2
/^([a-z _\/.'-])+$/i
would do. If you want any space character instead of just space, use /(^[a-z_\/.'-]|\s)+$/i
.
Author by
monda
Updated on June 17, 2022Comments
-
monda almost 2 years
In form - name field I want to do a validation against
- Should allow only Alpha characters
- Allow space
- Allow certain special characters -
_ \ / - . ’
I tried,
ng-pattern="/^[a-z]+[_+\+/+-+.+’][a-z]*$/"
Looks like I have missed out something as its not working!
-
monda over 7 yearsIt failed for name - Dinesh D'Soza
-
Wiktor Stribiżew over 7 yearsThen just add the single quote to the character class. Just keep in mind that the hyphen must be at the end, right before
]
. -
Wiktor Stribiżew over 7 yearsYour regex will match more than you think. See Why is this regex allowing a caret?
-
monda over 7 yearsCan we restrict leading/trailing whitespace ?
-
Wiktor Stribiżew over 7 yearsSo, the requirement changed ? :) Yes, it is easy.