我正在学习如何使用正则表达式来根据以下条件验证电子邮件地址:
user@domain.extension 如果其域和扩展名是example123.com并且用户的值满足以下约束:
- 以 1 到 6 个小写英文字母开头,表示字符类 [a-z]
- 小写字母后跟一个可选的下划线,即出现零次或一次 _ 字符
- 可选下划线后跟 0 到 4 个可选数字,由字符类 [0-9] 表示
理想情况下...
re.test(logic@example123.com) --> should return true
re.test(logic_@example123.com) --> should return true
re.test(logic_0@example123.com) --> should return true
re.test(logic2_0@example123.com) --> should return false
re.test(logic_0@gmail.com) --> should return false
到目前为止,我有: const re =/^[a-z]{1,6}[_?][\d?]{0,4}+@[example123\.com]$/ig
我收到错误“没有可重复的内容”。我已经浏览了其他 stackoverflow 帖子,但仍然不太明白为什么我的模式不起作用。
最佳答案
在\d{0,4}+
中,+
不能是{0,4}
的量词,所以它有“没有什么可重复的”。它可以是 \d{0,4}
或 \d+
。
此外,方括号用于字符范围或文字字符。不要在 [_?]
中使用它们,这将被解释为搜索 _
或 ?
。
由于您不想在电子邮件中使用大写字母,因此必须删除正则表达式中忽略大小写的 i
修饰符。
试试这个:
const re = /^[a-z]{1,6}_?\d{0,4}@example123\.com$/
console.log(re.test("logic@example123.com"));
关于javascript - 为什么我的验证电子邮件地址的正则表达式出现 "nothing to repeat"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54396384/