我正在使用正则表达式验证用户输入的值是否有效。
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}}
答案 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#不喜欢表达开头和结尾的/。正则表达式引擎可以有不同的格式和特殊字符,所以要小心!