我在 HTML 文本区域中有这个正则表达式验证表达式,以避免用户在那里键入电子邮件地址:
/.*^((?![a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+).)*$/
验证器工作正常,但是,当键入返回值时,表达式将不允许再输入任何文本。像这样的东西:
Line 1 here (no email, so all good)
[no more input allowed after the return]
试图研究但找不到任何有用的东西,在此先感谢!
最佳答案
使用
^((?![a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+[.][a-zA-Z0-9-.]+)[\s\S])*$
^^^^^^
.
不匹配换行符。
参见 this JS fiddle .
请注意,tempered greedy token 是一种资源消耗模式,我宁愿建议使用简单的先行解决方案:
^(?![\s\S]*?[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+[.][a-zA-Z0-9-.]+)[\s\S]*
参见 this JS fiddle .
这里,^
将声明字符串的开头,(?![\s\S]*?[a-zA-Z0-9_.+-]+@[a -zA-Z0-9-]+[.][a-zA-Z0-9-.]+)
一旦在文本区域中发现类似电子邮件的字符串,否定前瞻将使匹配失败,并且 [\s\S]*
将匹配整个内容(如果您的实现需要整个字符串匹配,否则 - 将其删除)。
关于regex - 电子邮件正则表达式验证器不允许返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40841993/