Javascript 为什么我的用于验证电子邮件地址的正则表达式错误为;“没什么可重复的吗?”;?
我正在学习如何使用regex,它将根据以下标准验证电子邮件地址: user@domain.extension如果其域和扩展名为example123.com,并且用户的值满足以下约束条件,则为有效:Javascript 为什么我的用于验证电子邮件地址的正则表达式错误为;“没什么可重复的吗?”;?,javascript,regex,string,Javascript,Regex,String,我正在学习如何使用regex,它将根据以下标准验证电子邮件地址: user@domain.extension如果其域和扩展名为example123.com,并且用户的值满足以下约束条件,则为有效: 它以1到6个小写英文字母开头,由字符类[a-z]表示 小写字母后跟可选下划线,即零或一次出现u字符 可选下划线后面是0到4个可选数字,由字符类[0-9]表示 理想情况下 re.test(logic@example123.com) --> should return true re.test(
- 它以1到6个小写英文字母开头,由字符类[a-z]表示
- 小写字母后跟可选下划线,即零或一次出现u字符
- 可选下划线后面是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
到目前为止,我有:constre=/^[a-z]{1,6}[\d}{0,4}+@[example123\.com]$/ig
我得到一个错误“没什么可重复的”。我已经浏览了其他stackoverflow帖子,但仍然不能完全理解为什么我的模式不起作用 试试这个:
^[a-z]{1,6}_?\d{0,4}?@(example123\.com)$
在
\d{0,4}+
中,+
不能是{0,4}
的量词,因此它“无需重复”。它可以是\d{0,4}
或\d+
此外,方括号用于字符范围或普通字符。不要在[\u?]
中使用它们,这将在这里被解释为搜索\
或?
由于电子邮件中不需要大写字母,因此必须删除正则表达式中忽略大小写的i
修饰符
试试这个:
const re=/^[a-z]{1,6}\d{0,4}@example123\.com$/
控制台日志(重新测试(“logic@example123.com"));代码>谢谢@SLePort。我试图理解为什么\d{0,4}+
无效。是不是因为{0,4}
说我可以匹配重复0到4次的数字,而添加+
是多余的我添加了+
符号,因为我想连接到我的@
,但现在我知道不需要了。再次感谢@jds+
量词表示“一个或多个”。在\d{0,4}+
中,您试图累积量词(“一个或多个零到四”…),这是行不通的。您最终可以使用(\d{0,4})+
来搜索一个或多个4位数的序列。多亏了@SLePort,我才在regex中升级了。修正了错误。结案:)