gpt4 book ai didi

javascript - 将 C# 正则表达式转换为 JavaScript 正则表达式

转载 作者:行者123 更新时间:2023-12-02 16:54:25 24 4
gpt4 key购买 nike

我已经用 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 属性,您会产生它有效的错觉。

最后,如果您使用新的 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

关于javascript - 将 C# 正则表达式转换为 JavaScript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26293386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com