Javascript 用于检查全名的regexp
我想编写一个regexp来检查用户是否插入了至少两个单词,并用至少一个空格隔开: 例如:Javascript 用于检查全名的regexp,javascript,regex,Javascript,Regex,我想编写一个regexp来检查用户是否插入了至少两个单词,并用至少一个空格隔开: 例如: var regexp = new RegExp(/^[a-z,',-]+(\s)[a-z,',-]+$/i); regexp.test("D'avid Camp-Bel"); // true regexp.test("John ---"); // true // but it should be false! 有两点: 在JavaScript中,通常最好使用文本而不是命名构造函数(因此/pattern/
var regexp = new RegExp(/^[a-z,',-]+(\s)[a-z,',-]+$/i);
regexp.test("D'avid Camp-Bel"); // true
regexp.test("John ---"); // true // but it should be false!
有两点:
/pattern/
而不是new RegExp()
(当然,有时需要构造函数路由){1,}
可以用修饰符+
^[a-z]([-']?[a-z]+)*([a-z]([-']?[a-z]+)*)+$
[a-z]
确保名称始终以字母开头,然后[-']?[a-z]+
允许使用一个单独的字符,只要后面至少有一个字母。*
允许使用任意数量的这些部分
第二部分,
([a-z]([-']?[a-z]+)*)
匹配一个空格,后跟相同模式的另一个名称。+
确保至少存在一个附加名称,但允许更多。{1,2}
如果只允许两个或三个部分名称,则可以使用。此答案还支持unicode字符
^[\p{L}]([-']?[\p{L}]+)*( [\p{L}]([-']?[\p{L}]+)*)+$
更简单的版本
/^([\w]{3,})+\s+([\w\s]{3,})+$/i
([\w]{3,})名字应仅包含字母,长度应为3个或更多
+\s名字后面应该跟一个空格
+([\w\s]{3,})+第二个名称应仅包含长度为3或以上的字母,并且后面可以跟其他名称,也可以不跟其他名称
/i忽略字母的大小写。可以是大写或小写字母以及答案提示:
var regexp=/^[a-z]+\s[a-z]+$/i;
(答案必须解释此模式)。\w
-是命名变量的任何符号,如[a-zA-Z0-9]@loldop-有些字符在变量名中有效,但与该模式不匹配。可以肯定的是,其中一些字符将是”
,-
您忘记了David Campt Junior
。我想/^([a-z]+(-)?)+$/i
非常适合,但在你的例子中,David--
是name。在我的例子中,David-是name,所以两个regexp都不是完美的..+1.编辑过的-ta.我误以为他想匹配两个名字,但事实上他说“至少两个”。regexp.test(“D'Devid Mark”);-->false
应该是真的。请用更多细节和示例改进您的答案
/^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$/g
/^([\w]{3,})+\s+([\w\s]{3,})+$/i