【发布时间】: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