Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于检查输入字符串的正则表达式仅为波斯语_C#_Regex_Asp.net Mvc 3_Model View Controller - Fatal编程技术网

C# 用于检查输入字符串的正则表达式仅为波斯语

C# 用于检查输入字符串的正则表达式仅为波斯语,c#,regex,asp.net-mvc-3,model-view-controller,C#,Regex,Asp.net Mvc 3,Model View Controller,我在MVC工作,对它我是新手。我想通过[RegularExpression]验证来检查输入值是否仅为波斯语(字符)。 所以我想使用正则表达式,需要检查Unicode的范围,但我不知道如何才能找到Unicode的波斯字符范围。这个正则表达式我说得对吗?您的建议是什么?我如何找到波斯语Unicode的范围?波斯语字符在以下范围内:[\u0600-\u06FF] 尝试: 检查波斯语中的第一个字母和最后一个字母的范围,我想是这样的: "^[آ-ی]$" 我在我的程序中使用了这个RegExp,它工作正常

我在MVC工作,对它我是新手。我想通过
[RegularExpression]
验证来检查输入值是否仅为波斯语(字符)。
所以我想使用正则表达式,需要检查Unicode的范围,但我不知道如何才能找到Unicode的波斯字符范围。这个正则表达式我说得对吗?您的建议是什么?我如何找到波斯语Unicode的范围?

波斯语字符在以下范围内:
[\u0600-\u06FF]

尝试:


检查波斯语中的第一个字母和最后一个字母的范围,我想是这样的:

"^[آ-ی]$"

我在我的程序中使用了这个RegExp,它工作正常。希望能帮助您:

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

波斯语字符在以下范围内:[\u0600-\u06FF]+[\s]

尝试:

此模式包含字母和空格字符

Regex.IsMatch(Text, @"^([\u0600-\u06FF]+\s?)+$")    
这仅包含标准阿拉伯符号范围,但波斯语还包含4个以上字符:

ژ \uFB8A
پ \u067E
چ \u0686
گ \u06AF
因此,您应该使用:

^[\u0600-\u06FF\uFB8A\u067E\u0686\u06AF]+$
如果要匹配零宽度非连接件,也应添加以下内容:

\u200C
TL;博士 所有说使用
\u0600-\u06FF
[آ-ی]
的答案都是错误的。 i、 e.
\u0600-\u06FF
包含的字符比您需要的多209个!它也包括数字! 波斯语必须使用的字符集如下:
  • 对于信件,使用

  • 对数字使用
    ^[۰۱۲۵۶۷۸۹]+$

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

或者这些字母的组合。您可能还需要向字符集添加其他阿拉伯字母,如Hamza
ء



这个答案的存在是为了修正一个常见的误解。代码点
0600
06FF
并不表示(也不表示
[آ-ی]
):

255个字符落在这个范围内,波斯语字母表有32个字母,除了波斯语数字演示之外,还有42个字母。如果我们添加元音(最初是阿拉伯语元音,很少在波斯语中使用)和Tanvin
)‬
ٌ‬)和Tashdid
ّ‬)这两个字母都是阿拉伯语发音符号的子集,而不是波斯语,我们将以46个字符结尾。这意味着:

\u0600-\u06FF
包含的字符比您需要的多209个!
۷
带码点
06F7
是数字的波斯语表示法
7
٧
带码点
0667
是相同数字的阿拉伯语表示法。
۶
是数字的波斯语表示法
6
٦
是相同数字的阿拉伯语表示法。所有这些数字都位于
0600
06FF
码点

波斯数字四(
۴
),五(
۵
)和六(
۶
)的形状如下所示 与阿拉伯语中使用的形状不同,其他数字 不同的代码点

你可以看到波斯语/波斯语中不存在的其他不同数量的字符,在验证名字或姓氏时,没有人愿意使用它们


[آ-ی]
也包括117个字符,这远远超过了验证所需的字符数。您可以使用

查看所有字符。我不明白为什么您需要正则表达式来检查字符是否在给定范围内。字符数!=语言。例如,“hdafhladf”不是英语。我确信有些字符是英语没有正式分类为“波斯语”,但允许使用波斯语(可能是空白字符?)不能与任何波斯语字符一起使用,例如“ž”、“پ”……因为这不是阿拉伯语!我认为最好使用:[\u0600-\u06FF]@NabiK.A.Z.
码点是
0622
码点是
06CC
阿拉伯字母Khah
062E
。所以它被包括在上述范围内。这也是
码点也是正确的。顺便说一句,你为什么多年来都没有更新你的博客?@revo,你说得对,但另一方面,你说得对您不允许使用的
[آ-ی]
،
؛
۰-۹
,…(),但在
[\u0600-\u06FF]
中,您可以使用更多必需的字符:()当然,这取决于用户的需要。关于我的博客,谢谢,我没有任何答案!:-D也许它是护身符!!!-)@NabiK.A.Z.
[آ-ی]
不应该包含数字,如果有人在使用它的时候考虑类似的范围,比如
[A-Z]
(它只表示字母)。但是
[آ-1740;]
也包含阿拉伯数字,并且比一些波斯语用户需要的字符多得多。第二个范围
[\u0600-\u06FF]
还包括多余的字符和符号,我们不能称之为波斯语。我在当前页面上看到了关于这个主题的更多详细信息。
[\u0600-\u06FF\uFB8A\u067E\u0686\u06AF]比较好。请参阅字符中的“接受空间”和“零宽度”。代码> >代码> 06FF包括“代码> 067 E< /代码>,<代码> 0686 和<代码> 06AFF 。您不需要重复它们。更好的方法是执行以下操作:ReXEX。IsMatch(文本,@)([\U060-\U06FF] + s s)+$)
^[\u0600-\u06FF\uFB8A\u067E\u0686\u06AF]+$
\u200C
[\u0600-\u0605 ؐ-ؚ\u061Cـ ۖ-\u06DD ۟-ۤ ۧ ۨ ۪-ۭ ً-ٕ ٟ ٖ-ٞ ٰ ، ؍ ٫ ٬ ؛ ؞ ؟ ۔ ٭ ٪ ؉ ؊ ؈ ؎ ؏
۞ ۩ ؆ ؇ ؋ ٠۰ ١۱ ٢۲ ٣۳ ٤۴ ٥۵ ٦۶ ٧۷ ٨۸ ٩۹ ءٴ۽ آ أ ٲ ٱ ؤ إ ٳ ئ ا ٵ ٮ ب ٻ پ ڀ
ة-ث ٹ ٺ ټ ٽ ٿ ج ڃ ڄ چ ڿ ڇ ح خ ځ ڂ څ د ذ ڈ-ڐ ۮ ر ز ڑ-ڙ ۯ س ش ښ-ڜ ۺ ص ض ڝ ڞ
ۻ ط ظ ڟ ع غ ڠ ۼ ف ڡ-ڦ ٯ ق ڧ ڨ ك ک-ڴ ػ ؼ ل ڵ-ڸ م۾ ن ں-ڽ ڹ ه ھ ہ-ۃ ۿ ەۀ وۥ ٶ
ۄ-ۇ ٷ ۈ-ۋ ۏ ى يۦ ٸ ی-ێ ې ۑ ؽ-ؿ ؠ ے ۓ \u061D]