处理“。”时出现C#regex.escape意外行为。

时间:2016-04-29 10:20:53

标签: c# visual-studio

嘿,我有一个Regex.Escape的问题我正试图从TextBox Controll提供一封电子邮件。该函数收到“test@test.test”。我希望得到的是"test@test\.test" Regex.Escape转义点字符。 Hovever取而代之的是"test@test\\.test",这非常令人困惑。我计划将该字符串传递给SQL查询,我担心用户行为不端。

holder.address = Regex.Escape(EmailAddressInput.Text);

这是我将结果字符串分配给holder类中的字段的方法。 我一直在研究这个问题,但是大多数消息来源(包括MSDN)都建议在点(“特殊字符”)前加一个反斜杠。 因为它现在是反斜杠逃避反斜杠,结果是格式错误的电子邮件地址。

2 个答案:

答案 0 :(得分:1)

var s = "test@test\\.test";表示s拥有test@test\.test字符串。您的问题不存在。有一个反斜杠。单击右侧的放大镜按钮 - 您将在 Text Visualizer 中看到它。

enter image description here

enter image description here

答案 1 :(得分:0)

正则表达式必须有\\因为它逃脱了\

字符串本身实际上只有一个\。