【发布时间】:2018-04-16 05:56:23
【问题描述】:
我的正则表达式有问题,因为在允许的字符后面不允许反斜杠。我已经通过在线正则表达式测试器对此进行了测试并且它正在工作,但是当我在我的 c# 上使用它时,它不惜一切代价返回 true。
这是我的正则表达式:var myRegex = new Regex("^[a-zA-Z0-9]+((([._-][^\/<>()[\\]_.,;:\\s@\"]+)*)|(\".+\"\\\/))$");
输入样本:
hello-\world : Negative
hello\world : Negative
hello/world : Negative
hello : Positive
但是,这是我在c#中实现时的结果
输入样本:
hello-\world : 正数(应该是负数)
你好\世界:否定
你好/世界:否定
你好:积极的
我似乎找不到否定反斜杠有什么问题。有点难以调试和检查为什么 C# 版本的 Regex 会给出不同的结果。
感谢所有反馈。
编辑:将正则表达式更新为 c#
【问题讨论】:
-
你试过双反斜杠吗?
-
@TahaPaksu 是的,我确实尝试过,但仍然通过它。
-
您能否阐明一下您的业务逻辑?那就更好理解了
-
@RizwanM.Tuman 我试图否定 \ 或反斜杠。但是,反斜杠与后续允许的字符结合时是允许的,这是不应该的。
-
您可以尝试在正则表达式的末尾添加一个 $。这样,正则表达式必须匹配完整的字符串,而不仅仅是通常测试的子字符串。虽然,在不确切知道您拥有什么代码的情况下,即围绕正则表达式对象进行调用,但很难理解为什么会出现误报。