我使用 jQuery验证器插件
在下面使用货币验证定义了此模型对象Model Item
{
[DisplayFormat(DataFormatString = "{0:F2}")]
[RegularExpression(@"^-?\d+(\.\d{1,2})?$",
ErrorMessage = "Enter a valid money value. 2 Decimals only allowed")]
public decimal? Price{ get; set; }
}
但是当我输入$165,600.70
时,我得到Enter a valid money value. 2 Decimals only allowed.
这是来自用户点的有效输入。
但是,如果他们输入165640.73 it is working
。
我如何让这个正则表达式适用于两者?有关重写此正则表达式的任何帮助吗?
呈现HTML
<input data-val="true" data-val-number="The field Price must be a number."
data-val-regex="Enter a valid money value. 2 Decimals only allowed"
data-val-regex-pattern="^\$?-?\d+(\.\d{1,2})?$" id="Price" name="Price"
type="text" value="$165,600.70">
答案 0 :(得分:0)
您的正则表达式中没有包含$
。也许你想要这样的东西。
^\$?-?\d+(\.\d{1,2})?$
^^^ Add these 3
答案 1 :(得分:0)
^\$-?\d{1,3}(?:,\d{3})*(?:\.\d{2})?$
修改强>
^\$-?\d{1,3}(?:(,?)\d{3}(?:\1\d{3})*)?(?:\.\d{2})?$
在这里,逗号是可选的。
答案 2 :(得分:0)
您可以尝试这样的事情:
^\$-?\d{1,3}(?:(?:,\d{3})+|\d+)?(?:\.\d{1,2})?$
1-3个数字,后跟任意数字的单个数字(即没有逗号)或,<three digits>
的分组,最后有一个可选的.<1-2 digits>
。我同意其他人建议在使用货币时使用一个小数字会让人感到困惑,因此您可能希望将{1,2}
更改为{2}
。