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

时间:2012-06-06 09:19:47

标签: javascript regex

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

姓名:

  • 仅限字母,无数字和特殊字符
  • 开头或结尾没有尾随空格,单词之间没有多个空格。
  • 最少3个,最多50个字符。

版本:

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

1 个答案:

答案 0 :(得分:9)

命名

正则表达式

^(?! )((?!  )(?! $)[a-zA-Z ]){3,50}$
  • 仅限字母,无数字和特殊字符=>我们使用一个字符类

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

    ^...$
    (?!  )
    
  • 开头和结尾没有空格=>我们可以再次使用一些外观

    ^(?! )...(?<! )$
    

    但由于javascript不支持lookbehind,我们必须使用lookahead

    (?! $)[a-zA-Z ]
    
  • 最少3个,最多50个字符。

    {3,50}
    

版本

正则表达式

^\d{1,2}\.\d{1,2}\.\d{1,2}$
  • 格式应为[编号]。[编号]。[编号]

    \d+\.\d+\.\d+
    
  • 数字之间只有一个点(1.3..4无效,1.3.4没问题)=&gt;通过指定\ d我们说只允许数字后跟一个点(应该被转义,否则它将意味着任何字符)

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

    \d{1,2}
    

最后一个正则表达式在javascript

中成为以下内容
if (/^\d{1,2}\.\d{1,2}\.\d{1,2}$/.test(subject)) {
    // Successful match
} else {
    // Match attempt failed
}