2017-06-14 103 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

有沒有必要逃避一個正斜槓。 /不是正則表達式元字符。 –