2013-05-05 106 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, @"^[א-ת]+$"); 

享受=)