Javascript Prestashop Smarty电子邮件正则表达式验证

Javascript Prestashop Smarty电子邮件正则表达式验证,javascript,regex,validation,smarty,prestashop,Javascript,Regex,Validation,Smarty,Prestashop,我有一个表格,当我提交它时,我想在提交前进行电子邮件验证。我创建了一个js文件,放在主题的js目录中,包含在页面上,我的页面是白色的。我激活了错误,我发现这就是错误: SmartyCompilexException:模板中存在语法错误 “D:\Projects\mpm\u shop\themes\pmart\js\processContactFormEmail.js” 在线44“var re= /^([a-zA-Z0-9.-+])+\@([a-zA-Z0-9-])+([a-zA-Z0-9]{2,

我有一个表格,当我提交它时,我想在提交前进行电子邮件验证。我创建了一个js文件,放在主题的js目录中,包含在页面上,我的页面是白色的。我激活了错误,我发现这就是错误:

SmartyCompilexException:模板中存在语法错误 “D:\Projects\mpm\u shop\themes\pmart\js\processContactFormEmail.js” 在线44“var re= /^([a-zA-Z0-9.-+])+\@([a-zA-Z0-9-])+([a-zA-Z0-9]{2,4})+$/;” -意外的“,”,应为中的“}”、“属性”之一 D:\Projects\mpm\u shop\tools\smarty\sysplugins\smarty\u internal\u templatecompilerbase.php,第667行

我的正则表达式是:

var-re= /^([a-zA-Z0-9.-+])+\@([a-zA-Z0-9-])+)+([a-zA-Z0-9]{2,4})+$/

我试着这样匹配它:

if (!email.match(re)) {
                    $('#email').css('border', '1px solid red'); 
                    $('.errorEmail').html('Email non è valido');
                    valid = false;
                }

请帮助。

您的正则表达式中有一个错误:

var re = /^([a-zA-Z0-9_.-+])+\@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
在第一组中,中间有一个破折号。和+(
-++
),这是导致错误的原因

你只需要逃避它:

var re = /^([a-zA-Z0-9_.\-+])+\@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;

下次遇到正则表达式问题时,您可以使用一个在线正则表达式工具,如,这对测试和验证表达式非常有帮助

嗨,谢谢你的回答!实际上,我的问题的解决方案是使用开始和结束smarty标记,如以下所述:。我这么说了,但是你的正则表达式返回我这个“SyntaxError:invalid range in character class”@irimieandrei,我再次测试了,它对我有效。这里有一个测试小提琴:我把var re='{literal}'+/^([a-zA-Z0-9\-+])+\@([a-zA-Z0-9-])+)+([a-zA-Z0-9]{2,4})+$/+'{/literal}';在我的js文件中,现在不会输出任何错误,但对于“test@yahoo.com“它说电子邮件是无效的。在您的示例中,我看到它正在工作,但不知道为什么在我的示例中不工作:(使用
{literal}var re=..{/literal}
,不要将
{literal}
连接到您的正则表达式。Smarty中使用此表达式忽略其中的内容。我直接在PHP中移动了验证,无论如何,感谢大家的回答!