HTML模式阿拉伯字母

时间:2013-05-15 12:25:29

标签: html html5 design-patterns arabic letters

我想在模式中插入阿拉伯字母,就像英文字母

一样
pattern="[a-zA-Z0-9-_. ]{1,30}"

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

2 个答案:

答案 0 :(得分:4)

阿拉伯语和波斯语的范围是共享的,因此此代码也可用于阿拉伯语。

[أ-يa-zA-Z]

这是查找Unicode语言字符范围的参考:

preg_replace and preg_match arabic characters

http://unicode.org/charts/

答案 1 :(得分:2)

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

使用规范Scripts.txt文件(Unicode Consortium)来定义所有字符的脚本(编写系统),我构造了以下内容:

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}"

从脚本定义为阿拉伯语的所有字符集开始,我选择了那些被声明为字母(通用类别LoLm)的字符,然后省略了那些超出BMP的字符,基本的多语言平面。

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

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