2013-05-30 152 views
2

我試圖讓正則表達式的工作,將允許所有字母數字字符(包括大小寫和非大寫字母以及數字),但也允許空格,正斜槓(/),破折號( - )和加號(+)?正則表達式匹配所有字母數字和某些特殊字符?

我一直在玩refiddle:http://refiddle.com/gqr但到目前爲止沒有成功,任何人的任何想法?

我不確定它是否有任何區別,但我正在嘗試在c#中執行此操作?

回答

4

如果你想允許只有那些,你還需要使用錨點^$

^[a-zA-Z0-9_\s\+\-\/]+$ 
^     ^^ 

這是你的正則表達式,我添加了字符,如第二行所示。不要忘記+*接近結束允許超過1個字符(*的情況下爲0或更多),否則正則表達式將嘗試僅匹配一個字符,即使使用.Matches也是如此。

您還可以通過一個\w代替全班[A-Za-z0-9_],像這樣:

^[\w\s\+\-\/]+$ 

編輯:

實際上,你可以避開一些逃逸,並避免最後一個精心佈置逃逸(即確保-可以是開頭或結尾):

^[\w\s+/-]+$ 
+1

感謝您的解釋,我設法讓它工作用你的例子,非常感謝!我得到了大量的單個字符,你的解釋不僅解決了我的問題,而且幫助我瞭解了爲什麼它不能在第一個地方工作:-) – Apqu

3

你的正則表達式將類似於:

/[\w\d\/\-\+ ]+/g 

這就是所有的字母,數字和/ - +和空格(而不是任何其他空格字符)

的+在結束意味着在至少需要1個字符。如果您想允許空字符串,請將其更改爲*。

0

此代碼是:

var input = "Test if/this+-works&sec0nd 2 part*3rd part"; 
var matches = Regex.Matches(input, @"([0-9a-zA-Z /+-]+)"); 

foreach (Match m in matches) if (m.Success) Console.WriteLine(m.Value); 

和輸出將有3個結果行:

  • 測試是否/本+ -Works
  • sec0nd 2部分
  • 第三---部分(我在這裏展示空間)
相關問題