我已经在模型验证中使用的C#中创建了一个正则表达式。我在JavaScript中也需要同样的功能。请帮我转换。
这是C#中的正则表达式
[Required]
[Display(Name = "Cost")]
[DataType(DataType.Currency)]
[RegularExpression(@"^(([a-zA-Z]+)|(\d{0,15}.\d{0,2}))$", ErrorMessage = "Cost can not have more than 2 decimal places.")]
[Range(typeof(Decimal), "0.01", "99999999999999.99", ErrorMessage = "{0} must be a decimal/number greater than 0 and less than 100000000000000.")]
public Nullable<decimal> Cost { get; set; }
还有另一条验证消息“字段必须是数字”
我正在javascript中尝试这样
var regExp = new RegExp("(([a-zA-Z]+)|(\d{0,15}.\d{0,2}))");
var res = regExp.test($('#Cost').val());
但这总是返回true
谢谢
如果您要尝试验证费用必须包含2个小数位,请在正则表达式中删除与任何字母字符串匹配的“或”部分:
^(\d{0,15}\.\d{0,2})$
注意:您也不需要括号,因为您在这里不会对捕获的值做任何事情。
您提到的正则表达式也将在C#中失败,但是由于您的Range
属性,您会感到它起作用的错觉。
最后,如果您使用的是new Regexp
语法,则需要转义斜杠:
var re = new RegExp("^\\d{0,15}\\.\\d{0,2}$");
// or using shorter JS syntax
var re = /^\d{0,15}\.\d{0,2}$/;
样品运行:
console.log(re.test("abc")); // false
console.log(re.test("10.23")); // true
console.log(re.test("10")); // false
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句