我试图创建一个正则表达式模式,允许用户使用以下规范创建一个用户名。 (对于该初始图案的目的,我只使用标准的美国英语字母表。Javascript正则表达式模式
第一个字符必须是字母字母(大写或小写)。[A-ZA-Z] 的最后一个字符必须是一个字母数字(大写或小写)[A-ZA-Z0-9] 之间必须是字母或数字与一个规则的任何字符:(。)
用户可以使用一个周期,破折号( - ),或下划线(_),但它必须跟一个字母数字字符。因此,一次不重复一个或多个这些字符。
我试过以下正则表达式模式,但没有得到结果我wa的希望。感谢您花时间帮助我解决这个问题。
^[a-zA-Z]([a-zA-Z0-9]+[._-]?[a-zA-Z0-9]+)+$
编辑
它实际上可能是工作我预期的方式。但我总是得到两场比赛回到我身边。第一个是整个有效的字符串,第二个是第一个字符串的缩写版本,通常会切断第一个字符。的有效输入
实例:
- Spidy
- Spidy.Man
- AMA-ZA-zing_Spidy的无效输入
实例:
- Extreme_ _ _Spi DY(重复下划线)
- 的_-_ Spidy(重复特殊字符)
- _ _ SPIDY _ _(开始和有特殊字符结尾)
谢谢,这是我自己的更好的代表。任何想法为什么我的text.match(模式)返回多个匹配? – Spidy
圆括号加倍捕获组,所以你也看到了捕获的值。你可以放弃所有这些,因为你需要知道的只是字符串是否匹配。 –