我正在尝试使用以下规则在javascript中创建正则表达式:
- 至少2个字符。
- 至少应有一个字母作为前缀,以
醇>.
或或
-
结尾,然后有更多字母。
以下字符串应合法 - aa
,aaaaa
,a.
,a-a
,a a
。
这些不合法 - a
(太短),aa.aa.
(两个点),aa-
(-
之后应该是另一个字母)。
我不知道我在这里做错了什么,但我的正则表达式似乎不起作用,因为它是合法的,但没有任何一个词匹配它:
(?=^.{2,}$)^(([a-z][A-Z])+([.]|[ -][a-zA-Z]+){0,1}$)
答案 0 :(得分:3)
必须完全重写以涵盖op的评论。新的正则表达式将是:
^[a-zA-Z][a-zA-Z]*[ -][a-zA-Z]*[a-zA-Z]$
第一替代^[a-zA-Z][a-zA-Z]*([a-zA-Z]|\.)$
- ^断言行开头的位置
- [a-zA-Z]匹配[a-zA-Z]
中存在的单个字符- [a-zA-Z] * *量词 - 零和无限之间的匹配 倍(贪婪)
- [ - ]匹配单个字符 - 或空格
- $断言行尾的位置
醇>
第二种选择 {{1}}
^在行的开头断言位置
[a-zA-Z]匹配[a-zA-Z]中存在的单个字符
- [a-zA-Z] * *量词 - 零和无限之间的匹配 倍(贪婪)
- ([a-zA-Z] |。)匹配下面列表中的单个字符 [a-zA-Z]或点
- $断言行尾的位置
醇>