我在HTML文本区域中有这个正则表达式验证表达式,以避免用户在那里键入电子邮件地址:
/.*^((?![a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+).)*$/
验证器工作正常,但是,当键入返回时,表达式将不再允许任何文本。类似的东西:
这里的第1行(没有电子邮件,所以一切都很好)
[返回后不再允许输入]
试图进行研究,但事先没有找到任何帮助,谢谢!
答案 0 :(得分:0)
使用
^((?![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]*
请参阅this JS fiddle。
此处,^
将断言字符串的开头,(?![\s\S]*?[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+[.][a-zA-Z0-9-.]+)
否定前瞻将在文本区域中找到类似电子邮件的字符串时使匹配失败,并且[\s\S]*
将匹配整个内容(如果你的实现需要整个字符串匹配,如果没有 - 删除它)。