如何在Pattern中排除特定的文字



我有一个<input type="email"/>,希望它
a(是一个有效的电子邮件地址,
b(不是给定的电子邮件地址-比如说"root@localhost".

我研究了HTML输入元素的模式,现在我尝试编写一个模式排除特定值。

我偶然发现了这篇文章:一个排除单词/字符串的正则表达式,并着眼于负面展望,这很有希望。除了一件事:
如果我使用负前瞻,它还将匹配开头的任何给定exlusion,而不仅仅是那些与它完全匹配的!

我的代码:

<input type="email" name="email" pattern="^(?!root@localhost).+$" required>

这将导致的验证错误

  • 空文本(正确(
  • 非电子邮件文本(正确(
  • 电子邮件地址"root@localhost"(正确(
  • 任何以"开头的电子邮件地址root@localhost"(错误(

你能帮我写一个模式,从验证中只排除一个电子邮件地址吗?

在这里使用模式正确吗?

谢谢,
Alexander

您可以使用

pattern="(?!root@localhost$).*"

由于HTML5模式是自动锚定在两端的,所以不必用^$来包围模式。

HTML5引擎处理属性值后的整个正则表达式将看起来像/^(?:(?!root@localhost$).*)$/(在FF和Chrome中,它将使用u标志编译(,并且将匹配除换行符之外的任何0个或更多个字符,从字符串的开始到结束,这不等于root@localhost字符串。

为什么不使用javascript验证

function validate(form) {
    if (form.email === "root@localhost") {
        return false;
    }
    return /.+@.+..+/.test(form.email);
}

相关内容

  • 没有找到相关文章

最新更新