我有一个 <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/