我找到了阿拉伯字母的这个正则表达式,但它也允许带有字母的数字。我怎样才能改变它让它只允许字母?
/[\u0600-\u06FF]/
可能你必须检查数字匹配的范围并将其排除(正式不包括在括号表达式中)。
在这里我找到了另一个有用的资源。
我建议只用字母
/[\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/
我尝试了这里提供的所有解决方案,没有任何效果,最后一个解决方案对我有用 仅限阿拉伯字母
^[\u0621-\u064A\040]+$
[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")]
首先,关于 unicode 中的阿拉伯语编码,您可能需要参考此表here
至于给你的正则表达式,
[\u0600-\u06FF]
是 unicode 列表中所有阿拉伯字符的范围,绝对包括字母、控制字符、空格和数字。
我的建议是:
/[\u0600-\u06FF&&[^\U06F0-\06F9]]/
它涵盖了减去阿拉伯数字(0-9)的所有内容。
从“超级”范围中减去一个范围。我只是不确定你的目标正则表达式方言是否支持这个。
我建议只针对字母、单词和句子
[^\sء-ي]+