【问题标题】:Allow regex pattern to be repeated if it is comma-separated?如果以逗号分隔,是否允许重复正则表达式模式?
【发布时间】:2017-11-28 02:29:07
【问题描述】:

我有一个用于电子邮件地址的 JavaScript 正则表达式:

/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

在这里提琴:https://regex101.com/r/8Z9ORb/1

在 .Validate 插件中使用,这将允许 test@test.com 但不允许 test@test 和其他错误的电子邮件地址。

但是,如果逗号分隔,我如何允许重复此模式?即,我该如何允许:

  • test@test.com
  • test@test.com,example@exmaple.com
  • test@test.com、example@exmaple.com、Nth@moreemails.com(注意空格)

虽然不允许 CSV 中的错误电子邮件或错误 CSV,例如:

  • test@test.com,testtest.com
  • test@test.com 和 test2@test2.com

【问题讨论】:

  • 提示:如果/^A$/ 只允许“A”,则/^A(, ?A)*$/ 允许“A”后跟零个或多个“,A”,逗号后有一个可选空格。
  • 您正在尝试使用正则表达式作为工具来完成两项工作:验证电子邮件地址,将“坏”电子邮件地址列入黑名单。提示 2:不要那样做。

标签: javascript regex


【解决方案1】:

这似乎有效?但我不是正则专家。

/^((([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))+(,|, |$))*$/

https://regex101.com/r/8Z9ORb/2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多