ng-pattern to allow spaces between words

24,988

Solution 1

If you want to allow a space in your input, you need to include it into the character class.

According to docs:

ngTrim (optional)
If set to false Angular will not automatically trim the input. This parameter is ignored for input[type=password] controls, which will never trim the input.
(default: true)

So, if your input field is not password field I'd recommend:

ng-pattern="/^[\w -]*$/"

The \w stands for [A-Za-z0-9_] in JS, the underscore does not have to be escaped and the hyphen at the end of the character class does not need escaping either.

Solution 2

I think I found a very simple and basic solution for my requirement i.e. to allow alphanumeric, _, - and space. Space should be allowed between word and not leading and trailing space.

ng-pattern="/^[a-zA-Z0-9\_\- ]*$/"

Anybody find issue with it , let me know please.

Share:
24,988
immirza
Author by

immirza

Updated on July 09, 2022

Comments

  • immirza
    immirza almost 2 years

    I am looking for a regular expression that prevents special characters and only allows letters, numbers, dash (-), underscore (_) an space.

    This regex works great but it doesn't allow for spaces between words.

    For example, if enter "123 456", i get custom error i defined. How i can tweak this reg to allow space between words as well in addition to letters, numbers, dash and underscore.

    <input type="text" name="serialNumber" data-ng-model="SerialNumber" ng-pattern="/^[a-zA-Z0-9_-]*$/" maxlength="100"/>
    <div data-ng-if="Form.serialNumber.$error.pattern" class="error">Please enter valid serial number</div>