2010-02-20 148 views
2

我正在asp.net工作。我正在使用正則表達式驗證程序正則表達式拒絕逗號以外的特殊字符

請幫助我創建一個不允許使用逗號以外的特殊字符的正則表達式。逗號必須被允許。

我檢查了regexlib,但是我找不到匹配項。我與^(a-z|A-Z|0-9)*[^#$%^&*()']*$搭檔。當我將其他字符添加爲無效時,它不起作用。

你也可以請建議我一個地方,我可以找到正則表達式的好資源嗎? regexlib似乎很大;但列出非常有限但使用最多的例子的任何其他地方?

此外,我可以使用C#代碼創建表達式嗎?任何文章呢?

+1

你可以定義「特殊字符」的含義嗎? – 2010-02-20 12:04:12

+0

你有沒有試過http://www.regular-expressions.info/? – 2010-02-20 12:05:42

+0

極好的正則表達式工具/教程http://www.gskinner.com/RegExr/ – gingerbreadboy 2010-02-20 12:40:06

回答

0

對於不是逗號的單個字符,[^,]應該工作得很好。

3

[\ d \ W \ S,*

只是一個猜測

+0

你可能不應該只是提供猜測作爲答案。我不是說你的回答是錯的,我只是說這不是最佳做法。如果你的猜測是錯誤的,加上人們會投你一票,你會失分。 – PICyourBrain 2010-02-20 12:02:41

+1

@Martin米蘭, 「\ w」表示字母數字字符。所以再次\ d是沒有必要的。 \ w也會照顧數字。 – Shekhar 2010-02-20 12:14:39

+0

足夠公平 - 沒有時間去測試它,但我會在將來考慮你的評論...... – 2010-02-20 19:14:07

1

要回答的任何文章,我來到這裏開始,覺得這是一個很好的資源:
http://www.regular-expressions.info/

對於當前的問題,嘗試這樣的事:

[\w\s,]* 

這裏有一個細目:

  • 匹配單個字符存在於下面的列表«[\ W \ S,] *»
    • 之間的零和無限次,多次地,用之於根據需要(貪婪)« *»
    • 單詞字符(字母,數字等),«\ W»
    • 空白字符(空格,製表符,換行符等),«\ S»
    • 字符‘’« ,»
+0

我相信OP希望* nothing *但字符串中允許的字符:'^ [\ w \ s,] * $' – 2010-02-20 12:25:38

0

您可以嘗試[\ w \ s,]正則表達式。這個正則表達式只會匹配字母數字字符和逗號。如果任何其他字符出現在文本中,則這不會匹配。

關於第二個問題關於正則表達式的資源,你可以轉到

http://www.regular-expressions.info/

這個網站有很多對正則表達式的教程,加上它有很多的usefult信息。

此外,我可以使用 C#代碼創建表達式嗎?任何文章呢?

通過這種方式,你的意思是說,你要知道這對正則表達式執行類和方法?或者你想要爲你創建正則表達式的工具?

+0

還有一個問題......什麼如果我不應該允許空間?我嘗試了「[\ w,] *」。如果我在一個角色後面進入空間,它會正常工作。如果我先進入空間,它不起作用。請幫忙 – Lijo 2010-02-20 17:02:58

+0

爲了留出空間,你可以使用[\ w \ s,] – Shekhar 2010-02-22 04:45:36

3
[\w\s,]+ 

工作正常,正如你可以看到以下。

RegExr是一個偉大的地方來測試您提供實時結果的正則表達式,還配備了常用的表情非常完整列表。

[]字符等級\w匹配任何字符(字母數字&下劃線)。 \s 匹配任何空格字符(空格,製表符,換行符)。 ,包括逗號+是貪婪匹配;這將匹配前面的1次或更多次。

+0

@Mohammad,+1,優秀的正則表達式工具! – MagicAndi 2010-02-20 12:52:15

+0

''[']'被稱爲角色類,而不是捕獲集。 – 2010-02-20 15:57:31

+0

ty,更新了帖子! – Mohammad 2010-02-20 18:38:25

0

您可以創建C#表情,這樣的事情通常做的伎倆:

 Regex regex = new Regex(@"^[a-z | 0-9 | /,]*$", RegexOptions.IgnoreCase); 
     System.Console.Write("Enter Text"); 
     String s = System.Console.ReadLine(); 
     Match match = regex.Match(s); 
     if (match.Success == true) 
     { 
      System.Console.WriteLine("True"); 
     } 

     else 
     { 
      System.Console.WriteLine("False"); 
     } 
     System.Console.ReadLine(); 

您需要導入System.Text.RegularExpressions; 上面的正則表達式只接受數字,字母(大寫和小寫)和逗號。

對於正則表達式的小介紹,我認爲MCTS 70-536這本書可以提供很大的幫助,我非常確定您可以從某處下載它或獲得一份副本。

我假設你從未在C#中使用正則表達式搞混,因此我提供了上面的代碼。

希望這會有所幫助。

+0

管道和空間不屬於那裏;他們會匹配實際的管道和空間。另外,我不確定你爲什麼把那個'/'放在那裏,但它也不屬於它; '[a-z0-9,]'是你所需要的。除非OP明確指出空字符串是有效的,否則應該使用'+'而不是'*'。 – 2010-02-20 16:15:58

+0

我認爲一個空字符串也是有效的。對於我在正則表達式中犯的錯誤表示歉意,但是當我嘗試它時,它確實奏效,所以我不認爲它是完全錯誤的。 我會記住+的東西,謝謝你的糾正。 – npinti 2010-02-21 09:20:33

0

謝謝你,好..

[\ W \ S,*作品

讓我經歷regular-expressions.info回來,如果我需要進一步的支持。

讓我試一下C#代碼方法,如果需要進一步支持,請回來。

[此論壇很棒。質量如此回答..入住]

再次感謝

+0

嗨, 我的意思是整數,字母和逗號 – Lijo 2010-02-20 18:15:08

0

(…)是表示一個分組,而不是一個與[…]表示的字符集。所以試試這個:

^[a-zA-Z0-9,]*$ 

這將只允許字母數字字符和逗號。

+0

我試過了。它允許空格作爲文本框中的第一個字符。任何其他想法? – Lijo 2010-02-20 18:12:37

+0

@Lijo:那不可能。你如何測試它? – Gumbo 2010-02-20 18:54:08

+0

秋葵嗨,我在asp.net如下 的field Lijo 2010-02-20 19:39:42