正则表达式不允许数字 - 只是阿拉伯字母

时间:2012-09-20 18:28:47

标签: regex arabic

我找到了这个阿拉伯字母的正则表达式,但它也允许带字母的数字。如何更改它以仅允许字母?

/[\u0600-\u06FF]/

4 个答案:

答案 0 :(得分:23)

可能你必须检查数字匹配的范围并将其排除(正式不包括在括号表达式中)。

Here我找到了另一个有用的资料来源。

我建议只使用字母

/[\u0600-\u065F\u066A-\u06EF\u06FA-\u06FF]/

因为这只匹配阿拉伯数字

/[\u0660-\u0669\u06F0-\u06F9]/

编辑:

我发现unicode中的阿拉伯语和阿拉伯语数字有两个范围。

如果你需要一个正则表达式来匹配一行,当它包含阿拉伯字母和数字时 - 请使用:

/^[\u0600-\u06FF]*$/

如果您还想阻止阿拉伯数字 - 请使用:

/^[\u0600-\u065F\u066A-\u06EF\u06FA-\u06FF]*$/

如果要匹配子字符串,而不仅仅是整行,请使用:

/\b[\s\u0600-\u065F\u066A-\u06EF\u06FA-\u06FF]*\b/

答案 1 :(得分:7)

我尝试了这里提供的所有解决方案,没有任何效果,最后一个解决方案对我有效 仅限阿拉伯字母

^[\u0621-\u064A\040]+$

答案 2 :(得分:0)

首先,关于unicode中的阿拉伯语编码,您可能需要参考此表here

至于你给出的正则表达式,[\u0600-\u06FF]是unicode列表中所有阿拉伯字符的范围,绝对包括偶数字母,控制字符,空格和数字。

我的建议是:

/[\u0600-\u06FF&&[^\U06F0-\06F9]]/

除了阿拉伯数字(0-9)之外,它只包含所有内容。

从“超级”范围中减去一个范围。我不确定你的目标正则表达式方言是否支持这一点。

答案 3 :(得分:0)

[RegularExpression(@"^[\u0621-\u064A\u0660-\u0669a-zA-Z]+$", ErrorMessage = "You can enter Arabic or English characters only")] 

[RegularExpression(@"^[0-9]+$", ErrorMessage = "You can enter numbers only")]

[RegularExpression(@"^[a-zA-Z\0-9]+$",ErrorMessage = "You can enter numbers or english characters only")]

[RegularExpression(@"^[\u0621-\u064A\u0660-\u0669\0-9]+$", ErrorMessage = "You can enter numbers or arabic characters only")]

[RegularExpression(@"^[\u0621-\u064A\u0660-\u0669]+$", ErrorMessage = "You can enter arabic characters only")]

[RegularExpression(@"^[a-zA-Z]+$",ErrorMessage = "You can enter english characters only")]