regexp for checking the full name

Simpler version

    /^([\w]{3,})+\s+([\w\s]{3,})+$/i

([\w]{3,}) the first name should contain only letters and of length 3 or more

+\s the first name should be followed by a space

+([\w\s]{3,})+ the second name should contain only letters of length 3 or more and can be followed by other names or not

/i ignores the case of the letters. Can be uppercase or lowercase letters


This answer also supports unicode characters.

^[\p{L}]([-']?[\p{L}]+)*( [\p{L}]([-']?[\p{L}]+)*)+$

/^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$/g

Does ^[a-z]([-']?[a-z]+)*( [a-z]([-']?[a-z]+)*)+$ work for you?

[a-z] ensures that a name always starts with a letter, then [-']?[a-z]+ allows for a seperating character as long as it's followed by at least another letter. * allows for any number of these parts.

The second half, ( [a-z]([-']?[a-z]+)*) matches a space followed by another name of the same pattern. + makes sure at least one additional name is present, but allows for more. ({1,2} could be used if you want to allow only two or three part names.