2017-06-14 59 views
1

所以我在C#中建立一个用户可以输入名字的小解析器。现在,这些名字可以在threeformats:正则表达式用于删除标点符号但忽略正斜杠?

"name" OR "name/name" OR "name-name" 

用户可以写不同的标点符号的输入字符串,如name?name.要删除这些我有一个正则表达式去,看起来是这样的:

var expression = "name/name"; 
    var regexPunctuation = new Regex(@"[^-\w\s]"); 
    expression = regexPunctuation.Replace(expression, string.Empty); 

我的正则表达式适用于单个名称和名称,中间有一个-,但没有正斜杠的名称。如果用户输入name/name,结果只是name name。如何更改我的正则表达式,以便忽略正斜杠,以便结果为name/name?请注意0​​之间的额外空格。

+1

你尝试以一个斜线添加到您的忽略模式? '新的正则表达式(@“[^ - \ w \ s /]”);' – DolceVita

+0

首先拆分字符串,并处理每个2个子字符串,然后再回来。如果没有'/',只处理唯一的'name'部分。 –

+0

额外空间与问题有什么关系?你说“注意”,但据我所知,他们与这个问题无关。如果它们相关,请详细解释。 –

回答

0

应该是这样:

new Regex(@"[^-/\w\s]") 
+0

试过了,没有区别。 – leffe10

+1

http://imgur.com/C468GZ6也许你在程序的另一部分有什么问题? – fdafadf

+0

这也适用于我,使用问题的代码片段,但在模式中额外的斜杠。 –

0

尝试逃离/这样的:new Regex(@"[^-\/\w\s]")

0
var regexPunctuation = new Regex(@"[^-\/\w\s]"); 
+0

有没有必要逃避一个正斜杠。 /不是正则表达式元字符。 –