用于验证名称和版本的javascript正则表达式

用于验证名称和版本的javascript正则表达式,javascript,regex,Javascript,Regex,我正在尝试用JavaScript编写一个正则表达式。我需要验证名称和版本,条件如下: 姓名: 只有字母,没有数字和特殊字符 开始或结束处没有尾随空格,单词之间也没有多个空格 最少3个字符,最多50个字符 版本: 格式应为[number].[number].[number] 数字之间只有一个点(1.3..4无效,1.3.4正常) 每个数字可以是1或2位数字,如1.11.26(有效),但不是2.343.23(无效) 名称 正则表达式 ^(?! )((?! )(?! $)[a-zA-Z ]){

我正在尝试用JavaScript编写一个正则表达式。我需要验证名称和版本,条件如下:

姓名:

  • 只有字母,没有数字和特殊字符
  • 开始或结束处没有尾随空格,单词之间也没有多个空格
  • 最少3个字符,最多50个字符
版本:

  • 格式应为
    [number].[number].[number]
  • 数字之间只有一个点(
    1.3..4
    无效,
    1.3.4
    正常)
  • 每个数字可以是1或2位数字,如
    1.11.26
    (有效),但不是
    2.343.23
    (无效)
    • 名称

      正则表达式

      ^(?! )((?!  )(?! $)[a-zA-Z ]){3,50}$
      
      ^\d{1,2}\.\d{1,2}\.\d{1,2}$
      
      • 只有字母表,没有数字和特殊字符=>我们使用字符类

        [a-zA-Z]
        
      • 开头或结尾没有尾随空格,单词之间也没有多个空格。=>通过“锚定”正则表达式,我们说它应该是线上唯一的东西,它不能部分匹配。对于负前瞻,我们说不允许超过2个空格

        ^...$
        (?!  )
        
      • 开始和结束处没有空格=>同样,我们可以使用一些lookaround

        ^(?! )...(?<! )$
        
      • 最少3个字符,最多50个字符

        {3,50}
        
      版本

      正则表达式

      ^(?! )((?!  )(?! $)[a-zA-Z ]){3,50}$
      
      ^\d{1,2}\.\d{1,2}\.\d{1,2}$
      
      • 格式应为[number].[number].[number]

        \d+\.\d+\.\d+
        
      • 数字之间只有一个点(1.3..4无效,1.3.4正常)=>通过指定\d,我们说只允许数字后跟一个点(应该转义,否则它将表示任何字符)

      • 每个数字可以是1或2位数字,如1.11.26(有效),但不是2.343.23(无效)

      最后一个正则表达式在javascript中变成如下内容

      if (/^\d{1,2}\.\d{1,2}\.\d{1,2}$/.test(subject)) {
          // Successful match
      } else {
          // Match attempt failed
      }
      
      名称

      正则表达式

      ^(?! )((?!  )(?! $)[a-zA-Z ]){3,50}$
      
      ^\d{1,2}\.\d{1,2}\.\d{1,2}$
      
      • 只有字母表,没有数字和特殊字符=>我们使用字符类

        [a-zA-Z]
        
      • 开头或结尾没有尾随空格,单词之间也没有多个空格。=>通过“锚定”正则表达式,我们说它应该是线上唯一的东西,它不能部分匹配。对于负前瞻,我们说不允许超过2个空格

        ^...$
        (?!  )
        
      • 开始和结束处没有空格=>同样,我们可以使用一些lookaround

        ^(?! )...(?<! )$
        
      • 最少3个字符,最多50个字符

        {3,50}
        
      版本

      正则表达式

      ^(?! )((?!  )(?! $)[a-zA-Z ]){3,50}$
      
      ^\d{1,2}\.\d{1,2}\.\d{1,2}$
      
      • 格式应为[number].[number].[number]

        \d+\.\d+\.\d+
        
      • 数字之间只有一个点(1.3..4无效,1.3.4正常)=>通过指定\d,我们说只允许数字后跟一个点(应该转义,否则它将表示任何字符)

      • 每个数字可以是1或2位数字,如1.11.26(有效),但不是2.343.23(无效)

      最后一个正则表达式在javascript中变成如下内容

      if (/^\d{1,2}\.\d{1,2}\.\d{1,2}$/.test(subject)) {
          // Successful match
      } else {
          // Match attempt failed
      }
      

      没有表现出任何努力。所以,这不是一个免费的代码编写服务(尽管显然有些人认为它是!)你好,用户,欢迎使用Stack Overflow!显然,我们希望看到您在解决此问题时失败的尝试,以及一些有效/无效的示例字符串-这肯定有助于获得一个好的答案。如果你在Stack Overflow有过积极的体验,请告诉你所有的朋友。没有付出任何努力。所以,这不是一个免费的代码编写服务(尽管显然有些人认为它是!)你好,用户,欢迎使用Stack Overflow!显然,我们希望看到您在解决此问题时失败的尝试,以及一些有效/无效的示例字符串-这肯定有助于获得一个好的答案。如果您在Stack Overflow有过积极的体验,请告诉你所有的朋友。嘿,事实上我是新来的正则表达式。我不需要多个有效的空间,但它不接受像rahul malhotra这样的单个空间。那么正则表达式中应该有什么变化呢?@sanjay更新了我的答案,添加了一些lookaheadbutw。你对正则表达式是新来的,没关系,但在问题中提到这一点。很少有人不知道如何开始,但这是一个非常高级的问题,有可能。嘿..更新的正则表达式在开始或结束时接受尾随空格。我的要求是:有效:“Rahul”、“Rahul Sharma”、“Rahul Kumar Sharma”无效:“Manoj”、“Manoj”、“Manoj Modi”@sanjay更新我的答案。一些lookaround解决了这个问题。嘿,实际上我是新来的正则表达式。我不需要多个有效的空间,但它甚至不接受像rahul malhotra这样的单个空间。那么正则表达式中应该有什么变化呢?@sanjay更新了我的答案,添加了一些lookaheadbuth。顺便说一句,你对正则表达式是新手,但在问题本身中提到这一点。很少有人不知道如何开始,但这是一个非常高级的问题,有可能。嘿..更新的正则表达式在开始或结束时接受尾随空格。我的要求是:有效:“Rahul”、“Rahul Sharma”、“Rahul Kumar Sharma”无效:“Manoj”、“Manoj”、“Manoj Modi”@sanjay更新我的答案。一些旁观者解决了这个问题。