2013-05-05 107 views
4

作爲一個小程序的一部分,我正在寫我需要過濾一個字符串輸入,可能是「gibrish」(UTF8中的任何符號) 輸入可以是希伯來語和/或英語,但也有所有正常的跡象,如:?%$!@'_'等等...正則表達式希伯來語,英語,符號

朋友建議使用正則表達式,但由於我沒有經驗使用它,我來找你的意見。

如何創建一個C#函數來檢查輸入的文本,如果它不是「正確的」返回false

我到目前爲止嘗試是:

public static bool shortTest(string input) 
    { 
     string pattern = @"^[אבגדהוזחטיכלמנסעפצקרשתץףןםa-zA-Z0-9\_]+$"; 
     Regex regex = new Regex(pattern); 
     return regex.IsMatch(input); 
    } 

所有的字符後「[」和到「a」是希伯來語

+0

什麼是你的問題?你爲什麼不只在角色課中加入剩下的標誌? (順便說一句,你不需要逃避下劃線) – 2013-05-05 22:53:06

+0

@ m.buettner,因爲我傷心...從來沒有使用正則表達式,朋友給了我代碼,我試着看看如何使它爲我的目的工作。現在我有一個雙「foreach」字符比較函數,但做得很不好,所以我想使用正則表達式 – ian 2013-05-05 23:13:36

+0

問題依然存在:代碼不工作的原因是什麼? – 2013-05-05 23:27:44

回答

2

可以使用\p{IsHebrew}字符類而不是枚舉所有希伯來字符\ w用於[a-zA-Z0-9_]和\ s用於空格,製表符,換行符。您可以添加太多點,逗號......舉個例子:

^[\p{IsHebrew}\w\s,.?!;:-]+$ 

^[\p{IsHebrew}\w\s\p{P}]+$ 

\ p {P}表示所有ponctuation跡象(據我所知:.,?!:;-_(){}[]\/'"&#@%*

+0

嘗試過,得到這個錯誤「解析」^ [\ p {希伯來語} \ w \ s,。?!;: - ] ++ $「 - 未知屬性'希伯來語'。」 – ian 2013-05-05 23:11:52

+0

@ian:嘗試在我編輯的帖子中使用前綴「Is」,直接在您的代碼 – 2013-05-05 23:36:30

+0

中使用'is'我得到「解析」^ [\ p {IsHebrew} \ w \ s \ p {P}] + + $「 - 嵌套量詞+」。 – ian 2013-05-05 23:47:19

4

對於希伯來字母,在C#你可以做財產以後這樣的:

return System.Text.RegularExpressions.Regex.IsMatch(value, @"^[א-ת]+$"); 

享受=)