我要求密码必须包含 8 个字符,其中有 1 个大写字母和 1 个数字或特殊字符。我已经编写了模式并将其分配给 js 变量。但是当我尝试访问该 tpl 文件时,smarty 抛出“逗号”异常。
var strPattern = /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9]{8,})$/;
strPattern是js变量。
我应该如何在 smarty 中处理它?
错误 -
( ! ) FATAL ERROR: UNCAUGHT --> SMARTY COMPILER: SYNTAX ERROR IN TEMPLATE "CHANGE_PASSWORD.TPL" ON LINE 72 "VAR STRPATTERN = /^(?=.[0-9])(?=.[A-Z])(?=.[A-Z])([A-ZA-Z0-9]{8,})$/;" - UNEXPECTED ",", EXPECTED ONE OF: "}" <-- THROWN IN C:\WAMP\WWW\MYPROJECT\SMARTY-3.1.18\LIBS\SYSPLUGINS\SMARTY_INTERNAL_TEMPLATECOMPILERBASE.PHP ON LINE 72*
最佳答案
由于它是 JavaScript,因此解决方案应该使用 literal
标签包围 JavaScript:
<script>
{literal}
var strPattern = /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9]{8,})$/;
// here rest of JavaScript
{/literal}
</script>
但是从理论上来说,Smarty 3.1 文本标签应该不是必需的。
关于javascript - 模式的 Smarty 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26242272/