我想在模式中插入阿拉伯字母,就像英文字母
一样pattern="[a-zA-Z0-9-_. ]{1,30}"
我不知道如何完成这个动作。
答案 0 :(得分:4)
阿拉伯语和波斯语的范围是共享的,因此此代码也可用于阿拉伯语。
[أ-يa-zA-Z]
这是查找Unicode语言字符范围的参考:
答案 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}"
从脚本定义为阿拉伯语的所有字符集开始,我选择了那些被声明为字母(通用类别Lo
或Lm
)的字符,然后省略了那些超出BMP的字符,基本的多语言平面。
BMP之外的字符很少使用,要用JavaScript语法表示它们,您需要包含字符本身或每个字符使用两个\u
符号(代理对的每个组件一个)。这听起来不太现实。
这当然是一种“硬连线”解决方案:如果将新的阿拉伯字母添加到Unicode或者字符的脚本从阿拉伯语更改为阿拉伯语(非常不可能),则可能需要更新。但我不希望在我的一生中看到新的阿拉伯字母加入BMP。