我的正则表达式有问题,因为在允许的字符后不允许反斜杠。我已经通过在线正则表达式测试人员对此进行了测试并且它正在运行,但是当我在我的c#上使用它时,它会不惜一切代价返回。
这是我的正则表达式:var myRegex = new Regex("^[a-zA-Z0-9]+((([._-][^\/<>()[\\]_.,;:\\s@\"]+)*)|(\".+\"\\\/))$");
输入样本:
hello-\world : Negative
hello\world : Negative
hello/world : Negative
hello : Positive
但是,这是我在c#
中实现它时的结果输入样本:
hello- \ world:肯定(哪个应该是否定的)
你好\世界:否定
你好/世界:否定
你好:好的
我似乎无法找到否定反斜杠的错误。有点难以调试并检查为什么正则表达式的c#版本会产生不同的结果。
感谢所有反馈。
编辑:将正则表达式更新为c#
答案 0 :(得分:1)
你的正则表达式出错了。写了一些测试来纠正它:
var myRegex = new Regex("^[a-zA-Z0-9]+((([._-][^\\/<>()[\\]_.,;:\\s@\"\\\\]+)*)|(\".+\"\\\\/))$");
Assert.IsFalse(myRegex.IsMatch("hello-\\world"));
Assert.IsFalse(myRegex.IsMatch("hello\\world"));
Assert.IsFalse(myRegex.IsMatch("hello/world"));
Assert.IsTrue(myRegex.IsMatch("hello"));
你的第一组允许破折号,然后不禁止反斜杠。