以下适用于vb.net,基本上只允许标准美国键盘上的字符。粘贴的任何其他字符都将被删除。我使用以下正则表达式代码:
"[^A-Za-z0-9\[\{\}\]`~!@#$%\^&*\(\)_\-+=\\/:;'""<>,\.|? ]", "")
但是当我尝试在C#中使用它时它不起作用,我使用'\'作为转义序列。在转义序列方面,C#似乎有点不同?任何帮助,将不胜感激。
答案 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)
使用“@”前缀字符串,并在字符串中用“\”前缀引号。
即。这个字符串
C#中的ABC \ DEF“HIJ
将被编码为
@"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\[\{\}\]`~!@#$%\^&*\(\)_\-+=\\/:;'\"<>,\.|? ]
试试这个!