有人能告诉我正则表达式等同于以下javascript表达式
var validformat = /^[-+]?\d*\.?\d*$/
我在下面的c#代码中尝试了相同但是失败了。
Regex rgx = new Regex(@"/^[-+]?\d*\.?\d*$/")
bool result = rgx.IsMatch(expression)
代码基本上是为了验证数字 - 它应该允许20,000而不是20.3。和20 + 3
答案 0 :(得分:1)
我认为你需要摆脱双方的/
,以及将\.
更改为更具体的内容。如果您需要更多可能的分隔符,只需将它们添加到[+,]
中即可。您目前只在提问时提到+
和,
。
更新了regex
以删除20+3
的匹配。
using System.Text.RegularExpressions;
using System;
public class Program{
public static void Main(string[] args) {
Regex rgx = new Regex(@"^[-+]?\d*,?\d+$");
Console.WriteLine(rgx.IsMatch("10000")); //True
Console.WriteLine(rgx.IsMatch("20,000")); //True
Console.WriteLine(rgx.IsMatch("20+100")); // False
Console.WriteLine(rgx.IsMatch("20000,")); // False
Console.WriteLine(rgx.IsMatch("20.200")); // False
}
}
答案 1 :(得分:0)
更好地使用这个正则表达式:
^\d*[-+,]?\d*$
在你的代码中使用它:
它将匹配20,000和20 + 3但不匹配20.3或100.1
Match match = Regex.Match(input, @"^\d*[-+,]?\d*$")