Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to accept space in regex?

I have this regex:

const name_regex = /^[a-zA-Z]+$/;

I tested this with the following regex tool

link

Can you please tell me how to do to accept and space?

Accept eg: John Smith

Thanks in advance!

like image 824
Marius Avatar asked Jan 07 '23 15:01

Marius


1 Answers

Just add a space or \s (to allow any space character like tab, carriage return, newline, vertical tab, and form feed) in the character class

^[a-zA-Z ]+$

Note: This will allow any number of spaces anywhere in the string.

RegEx Demo

If you want to allow only a single space between first name and last name.

^[a-zA-Z]+(?:\s[a-zA-Z]+)?$
  1. ^: Start of the line anchor
  2. [a-zA-Z]+: Match one or more letters
  3. (?:: Non-capturing group
  4. \s[a-zA-Z]+: Match one or more letters after a single space
  5. ?: allow previous group zero or one time
  6. $: End of line anchor

RegEx Demo

input:valid {
  color: green;
}
input:invalid {
  color: red;
}
<input pattern="[a-zA-Z]+(?:\s[a-zA-Z]+)?" />

To allow multiple names/string separated by a space, use * quantifier on the group.

^[a-zA-Z]+(?:\s[a-zA-Z]+)*$
                         ^

RegEx Demo

like image 114
Tushar Avatar answered Jan 22 '23 12:01

Tushar