C#使用正则表达式

时间:2011-03-16 03:10:23

标签: c# regex vb.net

以下适用于vb.net,基本上只允许标准美国键盘上的字符。粘贴的任何其他字符都将被删除。我使用以下正则表达式代码:

"[^A-Za-z0-9\[\{\}\]`~!@#$%\^&*\(\)_\-+=\\/:;'""<>,\.|? ]", "")  

但是当我尝试在C#中使用它时它不起作用,我使用'\'作为转义序列。在转义序列方面,C#似乎有点不同?任何帮助,将不胜感激。

5 个答案:

答案 0 :(得分:3)

使用@作为字符串的前缀。而已。从那里你可以使用VB中的正则表达式字符串(包括加倍"字符)。

// Note: exact same string you're using, only with a @ verbatim prefix.
string regex = @"[^A-Za-z0-9\[\{\}\]`~!@#$%\^&*\(\)_\-+=\\/:;'""<>,\.|? ]";
string crazy = "hĀečlĤlŁoźtƢhǣeǮrȡe";
Console.WriteLine(Regex.Replace(crazy, regex, ""));

输出:

hellothere

答案 1 :(得分:0)

使用“@”前缀字符串,并在字符串中用“\”前缀引号。

即。这个字符串

  

ABC \ DEF“HIJ

C#中的

将被编码为

@"abc\def\"hij"

答案 2 :(得分:0)

你需要逃避你的“角色。通过在你的角色之前放一个\来做到这一点。

"[^A-Za-z0-9[{}]`~!@#$%\^&*()_-+=\/:;'""<>,.|? ]"

应该成为

"[^A-Za-z0-9[{}]`~!@#$%\^&*()_-+=\/:;'\"\"<>,.|? ]"

如果在此之前使用@prefix,它将逐字处理反斜杠而不是转义字符,并且您将无法获得所需的结果。

答案 3 :(得分:0)

逃离你的角色:

"[^A-Za-z0-9[{}]`~!@#$%\^&*()_-+=\\/:;'\"<>,.|? ]"

正则表达式设计和测试(免费)的好工具是: http://www.radsoftware.com.au/regexdesigner/

答案 4 :(得分:0)

你需要逃避你的正则表达式才能在C#中使用

[^A-Za-z0-9\[\{\}\]`~!@#$%\^&*\(\)_\-+=\\/:;'\"<>,\.|? ]

试试这个!