javascript - 为什么我的验证电子邮件地址的正则表达式出现 "nothing to repeat"错误?

标签 javascript regex string

我正在学习如何使用正则表达式来根据以下条件验证电子邮件地址:

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/

相关文章:

PHP:正则表达式匹配短语不包含特定单词

objective-c - NS正则表达式 :enumerateMatchesInString hangs when called more than once

php - 正则表达式替换所有匹配项,除非匹配项位于字符串的末尾

java - 暴力密码破解程序 Java

php - 使用 JavaScript 确认对话框在后台进行 PHP 调用

JavaScript 返回值 : What does <> mean?

javascript - jquery ajax 存储变量然后稍后检索

javascript - 评论返回为 [Object Object]

java - 为什么 Java 字符串比较在 Java 15 和 Java 11 中表现不同?

正则表达式 : negative pattern in a filename