简体   繁体   English

正则表达式就是这样:Tyler Durden

[英]Regular Expression in exactly this form : Tyler Durden

Hi i need a javascript regex for a name field in my html form. 嗨,我需要一个html格式的名称字段的javascript正则表达式。 The user should be able to enter multiple names seperated with space. 用户应该能够输入多个用空格分隔的名称。 And first character of all names should be a capital. 所有名称的第一个字符都应大写。 No numbers, special chars. 没有数字,特殊字符。 etc. 等等

thank you. 谢谢。

^[A-Z][a-zA-Z]* [A-Z][a-zA-Z]*$

如果需要两个以上的名称:

^([A-Z][a-zA-Z]*)( [A-Z][a-zA-Z]*)*$
\b([A-Z][a-z]* [A-Z][a-z]*)\b

\\b匹配宽度为0的单词boundarym。

^([AZ][az]* [AZ][az]*)*

will match the following strings and capture them into groups like so: 将匹配以下字符串并将其捕获为如下组:

Tyler Durden something else John Doe another thing Barack Obama

Tyler Durden John Doe Barack Obama Tyler Durden John Doe Tyler Durden John Doe Barack Obama

var nameOne = "Tyler Durden";
nameOne.match(/^[A-Z][a-zA-Z]*(\s+[A-Z][a-zA-Z]*)*$/);
>>> [ "Tyler Durden", " Durden" ]

var nameTwo = "Tyler Francis Durden";
nameTwo.match(/^[A-Z][a-zA-Z]*(\s+[A-Z][a-zA-Z]*)*$/);
>>> ["Tyler Francis Durden", " Durden"]

Because of the parenthesis defining a capturing group you get the final name as a captured match. 由于括号中定义了捕获组,因此您可以将最终名称作为捕获的匹配项。 To get the whole name if it matches, use 要获取全名(如果匹配),请使用

nameTwo.match(/^[A-Z][a-zA-Z]*(\s+[A-Z][a-zA-Z]*)*$/)[0];
>>> "Tyler Francis Durden"

If you only care about matched vs unmatched, you can just test the return for null 如果您只关心匹配与不匹配,则可以测试返回的结果是否为null

^([A-Z][a-z]* [A-Z][a-z]*)(:b+[A-Z][a-z]* [A-Z][a-z]*)*$

You can use more than one space to separate each name. 您可以使用多个空格来分隔每个名称。 This is if you interpret being able to give "multiple names" as meaning a single name is a combination of the first and the last name. 这是如果您将能够给出“多个名称”解释为意味着单个名称是名字和姓氏的组合。

This should match multiple names like this: 这应该匹配多个名称,如下所示:

Bill Smith 比尔·史密斯

or 要么

Bill Smith Brian Jones Allan King 比尔·史密斯·布莱恩·琼斯艾伦·金

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM