I wanted to get a regex pattern for name where i m using for validation purpose.The pattern which i m using now is having some problem.The problem is if i give a开发者_StackOverflow中文版 single name like
jack morrison paul
its taking but if i give
jack paul
where i am giving jack and double space and paul its not taking.jack is first name morrison is middle name and paul is last name.If i give first and last name and if i dont give middle name its taking double spaces while validating.I think some problem with my regex so please help me in solving this problem.I am new to this.
// regex pattern
^([A-Za-z]([A-Za-z](\\s|\\.|_)*?)+[a-zA-Z]*$
Please format your question better. I had to read it multiple times to understand what you were trying to achieve.
My first stab:
^([\w]+)\s+([\s\w]+)\s+([\w]+)$
It will split first, middle, and last name.
How about this one:
^(\w+)\s+(?:(\w+)\s+){0,1}(\w+){0,1}$
I simplified the name captures a bit by just using \w
, which will match more than just letters, but you can change that out for your more specific requirements.
In the middle: (?:(\w+)\s+){0,1}
says we're going to look for one or more word characters, and one or more spaces, as a group between 0 and 1 times, meaning it's optional.
But I think the part that was throwing you was the use of just single \s
, which means it has to be one space exactly. I used \s+
meaning at least one space, but possibly more. You can change this to be more limiting if you like, such as: \s{1,2}
meaning between 1 and two spaces.
Hope that helps!
精彩评论