javascript - 如何排除模式中的特定文字

标签 javascript html regex validation

我有一个 <input type="email"/>并希望它
a) 是一个有效的电子邮件地址并且
b) 不是给定的电子邮件地址 - 比方说“root@localhost”。

我查看了 Pattern for HTML input elements现在我试着写一个模式排除一个特定的值。

我偶然发现了这篇文章:A regular expression to exclude a word/string并调查了negative look ahead ,这是很有前途的。除了一件事:
如果我使用negative lookahead,它还会匹配任何给定排除项开头的内容,而不仅仅是那些完全匹配的内容!

我的代码:

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

这将导致验证错误

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

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

这里使用模式的方式正确吗?

谢谢,
亚历山大

最佳答案

你可以使用

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

由于 HTML5 模式会自动锚定在两端,因此您不必用 ^$ 将模式括起来。

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

关于javascript - 如何排除模式中的特定文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53304725/

相关文章:

javascript - Backbone/Marionette collection.create 不触发回调

javascript - 仅在桌面上重新加载页面后 Bootstrap 4 折叠保存

java - 正则表达式 Java 字符串由星号分割

javascript - 根据 foreach 中的选择值显示 Div

javascript - 使用 overflow-x 在 div 中设置 x 滚动位置的纯 javascript 方法

javascript - 具有语义 ui 的动画

javascript - CSS-sprite 菜单和 jQuery addClass() 方法

javascript - 如何在x秒后自动提交表单?

regex - 如何验证正则表达式匹配的内容?

javascript - 使用 Javascript 查找非零数字的最后一个索引