如何为俄语+波斯语+中文+英语编写多语言正则表达式验证?

时间:2014-01-29 14:56:02

标签: javascript jquery regex

我终于想出了如何通过

验证我的标签中插入的俄语文本
    mask = jQuery.extend({unitprmask:/^\d+(\.\d{1,1})?$/,expressmask:/^\d+(\.\d{1,1})?$/,qtymask:/^\d+(\.\d{1,1})?$/,yourdescdmask:/^[а-яА-Я\p{Cyrillic}0-9\s\-]{1,10}$/,URLmask:/^(https?|ftp):\/\/(.*)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/});

但我希望允许用户使用混合语言编写#34;俄语+波斯语+中文+英语"。如何使用正则表达式实现它?我应该添加到上面的代码中,我试图添加a-zA-Z来验证英文字母,但我没有成功。我实际上无法添加其他语言,我写的那个

  yourdescdmask:/^[а-яА-Я\p{Cyrillic}0-9\s\-]{1,10}$/

仅允许使用俄语文本。

你能帮帮我吗?

由于

1 个答案:

答案 0 :(得分:3)

JavaScript 不支持 Unicode脚本语法,例如\p{Cyrillic} 如果您不相信我,可以查看ECMA-262的规范。截至第5版,不支持。

在JavaScript中进行严格的多语言验证的唯一方法是列出字符范围,例如\uxxxx-\uyyyy

Unicode脚本语法简单地基于Unicode Consortium的data file实现。

直接使用Unicode Script语法很方便,并使代码清洁。但是,您不知道字符类到底匹配的是什么。您可以利用这个机会查看字符列表并过滤掉您不想要的任何内容。