正则表达式检查输入的字符串只是在波斯语(Regex for check the input stri

2019-06-24 09:13发布

我与MVC的工作和我新上了。 我要检查输入值仅在波斯语言(文字) [RegularExpression]验证。 因此,我认为使用正则表达式,需要在统一码的范围内进行检查,但我不lnow怎样才能找到波斯语的Unicode字符的范围。 我说的对这个正则表达式? 你有什么建议,我怎么能找到的Unicode范围波斯语

Answer 1:

波斯字符的范围内: [\u0600-\u06FF]

尝试:

Regex.IsMatch(value, @"^[\u0600-\u06FF]+$")


Answer 2:

检查第一个字母和最后一个字母的范围在波斯,我认为是这样的:

"^[آ-ی]$"


Answer 3:

Regex.IsMatch(Text, @"^([\u0600-\u06FF]+\s?)+$")    

这仅包含标准阿拉伯语符号范围,但波斯还包括4个特点:

ژ \uFB8A
پ \u067E
چ \u0686
گ \u06AF

所以你应该使用:

^[\u0600-\u06FF\uFB8A\u067E\u0686\u06AF]+$

如果你想匹配零宽度非木匠,你应该加入这个太:

\u200C


Answer 4:

我用这个正则表达式在我的程序,它工作正常。 希望能帮助你:

 [پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤآإأءًٌٍَُِّ\s]+$


Answer 5:

TL; DR

所有的答案是说使用\u0600-\u06FF[آ-ی]是完全错误的。

\u0600-\u06FF包含209级比你更需要的人物! 它包括数字呢!

波斯语必须使用的字符集如下:

  • 在使用^[آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$信件。

  • 在使用^[۰۱۲۳۴۵۶۷۸۹]+$换号。

  • 在使用[ ‬ٌ ‬ًّ ‬َ ‬ِ ‬ُ ‬ْ ‬]元音在。

或者它们的结合。 您可能希望其他阿拉伯字母像哈姆扎添加ء你的性格额外设置。


这个答案的存在是为了解决一个常见的误解。 码点0600通过06FF中并不表示波斯语/波斯语字母表 (既不确实[آ-ی]

[\u0600-\u0605 ؐ-ؚ\u061Cـ ۖ-\u06DD ۟-ۤ ۧ ۨ ۪-ۭ ً-ٕ ٟ ٖ-ٞ ٰ ، ؍ ٫ ٬ ؛ ؞ ؟ ۔ ٭ ٪ ؉ ؊ ؈ ؎ ؏
۞ ۩ ؆ ؇ ؋ ٠۰ ١۱ ٢۲ ٣۳ ٤۴ ٥۵ ٦۶ ٧۷ ٨۸ ٩۹ ءٴ۽ آ أ ٲ ٱ ؤ إ ٳ ئ ا ٵ ٮ ب ٻ پ ڀ
ة-ث ٹ ٺ ټ ٽ ٿ ج ڃ ڄ چ ڿ ڇ ح خ ځ ڂ څ د ذ ڈ-ڐ ۮ ر ز ڑ-ڙ ۯ س ش ښ-ڜ ۺ ص ض ڝ ڞ
ۻ ط ظ ڟ ع غ ڠ ۼ ف ڡ-ڦ ٯ ق ڧ ڨ ك ک-ڴ ػ ؼ ل ڵ-ڸ م۾ ن ں-ڽ ڹ ه ھ ہ-ۃ ۿ ەۀ وۥ ٶ
ۄ-ۇ ٷ ۈ-ۋ ۏ ى يۦ ٸ ی-ێ ې ۑ ؽ-ؿ ؠ ے ۓ \u061D]

255个字符是堕落在这个范围内,波斯语字母表有32个字母,除了数字波斯语示范这将是42.如果我们增加元音(原阿拉伯语元音,在波斯语很少使用)和Tanvin(ً ٍِ ‬ ٌ ‬Tashdid( ّ ‬是用阿拉伯语变音符号不是波斯语的一个子集,我们就用46个字符结束。 这意味着:

\u0600-\u06FF包含209级比你更需要的人物!

۷与编码点06F7是数的波斯语表示7٧与代码点0667是相同数量的阿拉伯表示。 ۶是数的波斯语表示6٦是相同数量的阿拉伯表示。 并且都位于060006FF码点。

波斯数字4的形状( ۴ ),五( ۵ ),和六( ۶ )是从阿拉伯和其他数字所用的形状不同有不同的码点。

你可以看到不同数目的不波斯语/波斯存在过,没有人愿意让他们在验证一个名字或姓氏其它字符。

[آ-ی]包括117个字写得比什么需要有人进行验证等等。 您可以使用一饱眼福的Unicode CLDR



Answer 6:

波斯字符的范围内:[\ u0600- \ u06FF] + [\ s]的

尝试:

Regex.IsMatch(Text, @"^([\u0600-\u06FF]+\s?)+$")

这百通包含字母和空格Charachters。



文章来源: Regex for check the input string is just in persian language