Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于检查全名的regexp_Javascript_Regex - Fatal编程技术网

Javascript 用于检查全名的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/

我想编写一个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/
    而不是
    new RegExp()
    (当然,有时需要构造函数路由)

  • 如果您确实使用了构造函数,那么在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