Regex在应用程序中不起作用,但它适用于网站

时间:2017-09-12 17:24:46

标签: c#

我正在使用正则表达式验证用户输入的值是否有效。

string value = "500,21";
bool is_valid = Regex.IsMatch(value, "/^[0-9]+([,.][0-9]{2,2})?$/");

这段代码应该接受以下值:

500.21
500,21

然而,它给出的错误是说它不是一个有效的值。

但是,在使用https://regex101.com/https://regex101.com/r/s6Cl9I/1等网站时,我的正则表达式可以完美地运行,如您在此处所见{{3}}

2 个答案:

答案 0 :(得分:2)

正斜杠是JavaScript指示正则表达式边界的方式,与双引号指示字符串边界的方式非常相似。例如,JavaScript中的以下两个表达式是等效的:

/^[0-9]+([,.][0-9]{2,2})?$/.test("500,21")

new RegExp("^[0-9]+([,.][0-9]{2,2})?$").test("500,21")

在线正则表达式测试人员通常会为您添加这些正斜杠,因为他们在JavaScript上下文中思考。但它们实际上并不是正则表达式本身的一部分。

在C#中,您将正则表达式作为字符串传递,因此不需要这些斜杠。

string value = "500,21";
bool is_valid = Regex.IsMatch(value, "^[0-9]+([,.][0-9]{2,2})?$");

答案 1 :(得分:0)

C#不喜欢表达开头和结尾的/。正则表达式引擎可以有不同的格式和特殊字符,所以要小心!