【发布时间】:2017-07-27 20:15:55
【问题描述】:
我是正则表达式的新手,并尝试根据以下特定要求创建一个:
- 必须以字母 a-Z 或 A-Z 开头
- 可以包含数字 0-9
- 只能包含允许的特殊字符,即@.-'
- 上述特殊字符只允许出现一次,即 test9@my.com 或 new-test10@me.com 有效,但 test5@new@com 无效
我尝试了以下代码,但无法满足所有要求 -
var myregex = /^([a-zA-Z0-9@.\-'])*$/;
if(!myregex.test(userIdVal)){
alert('invalid');
}
感谢任何帮助。
【问题讨论】:
-
不尝试验证电子邮件地址。这是对用户名的自定义验证。我已经使用 JQuery 验证框架进行电子邮件验证。
-
如果您只想允许每个特殊字符
[@'.-]一次,请尝试在前瞻内捕获并检查对捕获的一个的反向引用:/^[a-z](?!.*?([@'.-]).*?\1)[a-z\d@'.-]*$/i
标签: javascript regex find-occurrences