【问题标题】:How do I check for a web address and reject an email with regex?如何检查网址并拒绝使用正则表达式的电子邮件?
【发布时间】:2009-09-12 00:07:04
【问题描述】:

我遇到障碍的地方是试图检查这个

(?<http>(http|ftp|https):\/\/)?(?<address>([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?)

如果表达式包含@符号,则拒绝该表达式。

我已经尝试了许多变体,但都没有成功。

如果我可以告诉它确保其中没有 @ 字符但我不想使用 [^@] 语法要求字符,那会起作用。那么我如何告诉正则表达式同时接受\w 和拒绝@。据我所知,我无法做到[\w^@]

我的困难是我正在使用正则表达式替换。你是不是建议我使用占位符和之后的十个匹配项?

【问题讨论】:

  • 一些有效和无效文本的例子会有所帮助
  • www.cnn.com 是一个有效地址 jim@cnn.com 不是也不应该被更改。
  • 即使您不想允许 username@ URL,example.com/foo?x=y@z 仍然是一个有效地址。在正则表达式中验证电子邮件地址或 URL 非常困难。允许裸主机名作为 URL 也使得它更不可能。
  • 我只需要确保当我执行 regex.replace 时,hte 替换不包含 @ 符号。这是我在这里唯一的挂机。我已经尝试过消极的向后看,但这似乎也不起作用。
  • 它必须在一条线上。当它开始匹配电子邮件中的域并认为它是一个网址时,就会出现问题。

标签: regex email webaddress


【解决方案1】:

您不必将所有内容都放入一个正则表达式中。例如,您可以匹配您现有的正则表达式,然后使用辅助正则表达式检查该字符串没有@-符号。

【讨论】:

【解决方案2】:

我同意内德的观点。使用两个正则表达式。您可以从多个来源获取它们,包括 http://regexlib.com/

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 2017-06-21
    • 2013-08-09
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    相关资源
    最近更新 更多