电子邮件Regex验证程序不允许返回

电子邮件Regex验证程序不允许返回,regex,validation,email,Regex,Validation,Email,我在HTML文本区域中有此正则表达式验证表达式,以避免用户在其中键入电子邮件地址: /.*^((?![a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+).)*$/ 验证器工作正常,但是,当键入返回时,表达式将不允许再输入任何文本。比如: 第1行(没有电子邮件,所以一切正常) [返回后不允许再输入] 试图研究,但找不到任何有用的,提前感谢 使用 ^((?![a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+[.][a-zA-Z0-9-.]+)[\

我在HTML文本区域中有此正则表达式验证表达式,以避免用户在其中键入电子邮件地址:

/.*^((?![a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+).)*$/
验证器工作正常,但是,当键入返回时,表达式将不允许再输入任何文本。比如:

第1行(没有电子邮件,所以一切正常)

[返回后不允许再输入]

试图研究,但找不到任何有用的,提前感谢

使用

^((?![a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+[.][a-zA-Z0-9-.]+)[\s\S])*$
                                                     ^^^^^^
与换行符不匹配

请注意,令牌是一种资源消耗模式,我建议使用一个简单的前瞻解决方案:

^(?![\s\S]*?[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+[.][a-zA-Z0-9-.]+)[\s\S]*


这里,
^
将断言字符串的开头,
(?![\s\s]*?[a-zA-Z0-9.+-]+@[a-zA-Z0-9-]+[.][a-zA-Z0-9-.]+)
一旦在文本区域中找到类似电子邮件的字符串,反向前瞻将使匹配失败,
[\s\s]*
将匹配整个内容(如果您的实现需要整个字符串匹配,如果不需要,请将其删除)。

正则表达式没有多大意义,尤其是开头的
*^
。如果您使用的是javascript,请将其替换为
^[\s\s]*
。反正我的第一个猜测是因为
与换行符不匹配。实际上,
*^
部分始终与此处字符串的开头匹配。正则表达式与看起来不像电子邮件的字符串匹配。如果锚定符与行边界匹配,则只会使行失败(如果任何行类似电子邮件)。请在其后面提供一些代码。如果用户添加一些空格或将“@”替换为“[at]”,则仍然可以输入人类可读的电子邮件地址…非常感谢!将“.”替换为“[\s\s])”完成了此任务。很高兴它为您工作。如果我的答案证明对你有用的话,请考虑一下投票。得到15分后,你可以投票表决。