0

我正在使用以下代码从电子邮件中删除一些不需要的字符。但正则表达式替换了“。” 符号,即使我没有提到要删除的字符集。

string emailText = @"[\s;'\(\)\[\]!#\$%&\*\+-\?>=<_:\/\""]";
var stringInput = Console.ReadLine(); //Input "sara@gmail.com"
var stringTest = Regex.Replace(stringInput, emailText,string.Empty); //Output "sara@gmailcom"

请帮我解决这个问题。

谢谢和问候, Saravanakumar R.

4

3 回答 3

6

在正则表达式中,表示和\+-\?之间的 ASCII 字符范围,其中包括很多标点符号,包括.+?.

您应该转义-以防止它表示字符范围。另一方面,您不需要转义[].

于 2013-07-16T04:51:00.833 回答
4

移动-到 的开头(或结尾)[...]

+-\?+使(ASCII 43) 和(ASCII 63)之间的所有字符?匹配。 .(ASCII 45)包含在该范围内。

于 2013-07-16T04:49:09.560 回答
0

减号(-)也应该被转义。

string emailText = @"[\s;'\(\)\[\]!#\$%&\*\+\-\?>=<_:\/\""]";
于 2013-07-16T04:52:53.677 回答