Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AngularJS - Remove leading and trailing whitespace from input-box using regex

I am writing a regular expression(regex) for adding multiple email ids in an input box with following conditions:

  1. Multiple email ids must be separated with comma ,
  2. Need to have atleast one email id
  3. There should not be any whitespaces in input field.

So i created this regex:

^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([,.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$

I tested it in regex101.com and its working like a charm https://regex101.com/r/bU7rU8/1

But when i integrate it with code, it works, but fails on leading and trailing whitespace.

Here is the demo link: http://jsfiddle.net/2G8gA/330/

like image 977
Mohit Pandey Avatar asked Aug 21 '15 07:08

Mohit Pandey


2 Answers

AngularJS trims the input by default, so you need to use ng-trim="false" in order to pass leading and trailing whitespace to your pattern regex.

See documentation:

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)

like image 180
Wiktor Stribiżew Avatar answered Oct 20 '22 11:10

Wiktor Stribiżew


Do you want leading/trailing spaces allowed on the whole string, or around each individual address?

For the former your regex should be

/^(\s*([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([,.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+\s*)*$/

and for the latter

/^(\s*([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25}\s*)+([,.](\s*([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+\s*)*$/
like image 43
codebox Avatar answered Oct 20 '22 13:10

codebox