0

我似乎在试图让 RegExp 规则在我的 Fomantic 表单上的一个字段的表单验证中起作用。所有其他规则都有效,包括自定义规则;只是不是一个正则表达式。

regExp 规则应该验证输入字段是有效的货币金额,但是当我添加规则时,页面无法加载 - “加载资源失败:服务器响应状态为 500(内部服务器错误)”。排除规则,页面加载正常。

正则表达式是: ^$(\d{1,3}(,\d{3})*|(\d+))(.\d{2})?$

我定义的规则(在转义 \ 字符之后)是: -

form_amount: { identifier  : 'form_amount', rules: [
 { type   : "regExp[/^\\$(\\d{1,3}(\\,\\d{3})*|(\\d+))(\\.\\d{2})?$/]", 
   prompt : 'Please enter a valid amount for this transaction' 
 }  
 ] }

有人知道我在做什么错吗?

谢谢

菲尔

4

2 回答 2

0

Well if you are using JavaScript to validate forms you can do the following

const regex = new Regex('Your Regular Expression')
const result = regex.test('Your currency value') // which will be a boolean value

于 2022-01-30T13:25:47.187 回答
0

感谢 Madhav 引导我朝着正确的方向前进。最后,我意识到 Smarty 模板和 RegEx 字符串的组合不能很好地协同工作。为了避免任何问题,我将 RegEx 字符串移到我的 PHP 中并将其分配给 Smarty 变量,然后在模板中的自定义验证函数中使用它。工作:-)

在显示模板之前从 PHP 中提取:-

$this->tpl->assign('regcurrency','/(?=.*?\d)^\$?(([1-9]\d{0,2}(,\d{3})*)|\d+)?(\.\d{1,2})?$/');

Smarty 模板中的 Javascript:-

 $.fn.form.settings.rules.currency = function() {
   let value = ($(".ui.form").form("get value", "form_amount")[0]);
   return {$regcurrency}.test(value);
 }; 
于 2022-01-31T08:36:16.740 回答