【发布时间】:2020-11-12 07:38:16
【问题描述】:
我有一个带有许多文本框的 ASP.NET 页面,可以在其中以货币格式写入值。 当用户写入一个值时,我执行一个 javascript 函数,该函数通过添加欧元符号和点“。”来格式化数字。将千位和逗号“,”分隔为小数。 要执行格式化,我在 javascript 中执行以下函数
$(function () {
$("#text1").blur(function () {
$(this).formatCurrency();
});
});
这个函数用于正确格式化负数,我只能得到两个结果
- 正数 € 1.000,00
- 负数 (€ 1.000,00)
括号内是负数
文本框有以下正则表达式:
<asp:TextBox ID="text1" runat="server" Width="100px"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegEx1" runat="server" ErrorMessage="RangeValidator"
ValidationExpression="^(-?\$?([1-9]\d{0,2}(,\d{3})*|[1-9]\d*|0|)(.\d{1,2})?|\(\$?([1-9]\d{0,2}(,\d{3})*|[1-9]\d*|0|)(.\d{1,2})?\))$"
ValidationGroup="Group2" CssClass="failureNotification" ControlToValidate="text1"
Display="Dynamic">L'Importo non è corretto</asp:RegularExpressionValidator>
如果我第一次写一个值,这个正则表达式工作得很好,但是如果我更新这个值不匹配。 例子 -我写1000 -java 格式值为 € 1.000,00 -我把数字1改成2 -€ 2.000,00 -我从正则表达式中得到错误,不匹配
如果我删除所有值并写入 2000,效果会很好。
会不会是在javascript中使用blur函数时使用regulaexpresion有问题?
感谢您的帮助
解决方案:
我发现了问题! 正则表达式在 javascript 格式化之前生效。 我更改了正则表达式,现在一切正常。
<asp:RegularExpressionValidator ID="RegularExpressionValidator5" runat="server" ErrorMessage="RangeValidator"
ValidationExpression="^\-?\(?\€? ?(\d{1,3}[.](\d{3}[.])*\d{3}|\d+)([,]\d{1,2})?\)?$"
ValidationGroup="Group2" CssClass="failureNotification" ControlToValidate="b1crediti_soci_dovuti" Diplay="Dynamic">L'Importo non è corretto</asp:RegularExpressionValidator>
我希望这篇文章对某人有所帮助! ;)
【问题讨论】:
-
与Java的连接在哪里?
-
对不起,我用过javascript
标签: javascript asp.net regex