2

我想在图案中插入阿拉伯字母,就像英文字母一样

模式="[a-zA-Z0-9-_.]{1,30}"

我不知道如何完成这个动作。

4

2 回答 2

4

The range for Arabic and Persian are shared so this code could be used for Arabic too.

[أ-يa-zA-Z]

This is the reference for finding the character range of Unicode languages:

preg_replace and preg_match arabic characters

http://unicode.org/charts/

于 2013-05-15T12:29:43.463 回答
3

HTML5pattern属性遵循 JavaScript 正则表达式语法,这使得事情变得相当尴尬。例如,您不能测试字符属性。相反,您需要列出允许的字符或字符范围。

使用定义所有字符的脚本(书写系统)的规范Scripts.txt文件(由 Unicode 联盟提供),我构建了以下内容:

pattern=
"[a-zA-Z0-9-_. \
\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\
\u06E5-\u06E6\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0750-\u077F\
\u08A0\u08A2-\u08AC\uFB50-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\
\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]{1,30}"

从所有脚本定义为阿拉伯语的字符集开始,我选择了那些被声明为字母(General CategoryLoLm)的字符,然后省略了 BMP(基本多语言平面)之外的字符。

BMP 之外的字符很少使用,为了在 JavaScript 语法中表示它们,您需要包含字符本身或\u对每个字符使用两种表示法(一个用于代理对的每个组件)。这听起来不太现实。

这当然是一个“硬连线”的解决方案:如果将新的阿拉伯字母添加到 Unicode 或字符的脚本从或更改为阿拉伯语(这极不可能),它可能需要更新。但我不希望在我有生之年看到新的阿拉伯字母添加到 BMP 中。

于 2013-05-15T13:20:59.743 回答