正则表达式不起作用

时间:2016-11-17 05:51:14

标签: regex

我正在尝试使用以下规则在javascript中创建正则表达式:

  
      
  1. 至少2个字符。
  2.   
  3. 至少应有一个字母作为前缀,以.-结尾,然后有更多字母。
  4.   

以下字符串应合法 - aaaaaaaa.a-aa a。 这些不合法 - a(太短),aa.aa.(两个点),aa--之后应该是另一个字母)。

我不知道我在这里做错了什么,但我的正则表达式似乎不起作用,因为它是合法的,但没有任何一个词匹配它:

(?=^.{2,}$)^(([a-z][A-Z])+([.]|[ -][a-zA-Z]+){0,1}$)

1 个答案:

答案 0 :(得分:3)

必须完全重写以涵盖op的评论。新的正则表达式将是:

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

Explanation

第一替代^[a-zA-Z][a-zA-Z]*([a-zA-Z]|\.)$

  
      
  1. ^断言行开头的位置
  2.   
  3. [a-zA-Z]匹配[a-zA-Z]
  4. 中存在的单个字符   
  5. [a-zA-Z] * *量词 - 零和无限之间的匹配   倍(贪婪)
  6.   
  7. [ - ]匹配单个字符 - 或空格
  8.   
  9. $断言行尾的位置
  10.   

第二种选择  {{1}}

  
      
  1. ^在行的开头断言位置

  2.   
  3. [a-zA-Z]匹配[a-zA-Z]中存在的单个字符

  4.   
  5. [a-zA-Z] * *量词 - 零和无限之间的匹配   倍(贪婪)
  6.   
  7. ([a-zA-Z] |。)匹配下面列表中的单个字符   [a-zA-Z]或点
  8.   
  9. $断言行尾的位置
  10.