波斯数字的正则表达式

10
我想创建JavaScript正则表达式来检查文本框中数值是否在范围内(U+06F0到U+06F9)或(0-9)。我应该如何构建这个正则表达式?
4个回答

25

将范围放在字符类中,如下所示。

^[\u06F0-\u06F90-9]+$

+ 重复前面的表达式一次或多次。


你为什么要使用“u0F90-9”? - Hamid
2
@Hamid 计数正确。他使用了\u06F0-\u06F90-9,正如您所需的那样。 - Tomalak
@Hamid,请将\u06F0-\u06F90-9视为不同的部分。正则表达式引擎也是这样解析的。 - Avinash Raj

3
我建议采用这种基于我的搜索的模式:
pattern = "^([\u06F0]|[0])([\u06F9]|[9])(([\u06F0-\u06F9]|[0-9]){2})(([\u06F0-\u06F9]|[0-9]){3})(([\u06F0-\u06F9]|[0-9]){4})"

虽然有点复杂,但如果您想要以波斯电话号码的格式输入波斯和英文数字,它是可行的。我只是用|作为,括号用于分组。如@ahmad_mhm所提到的那样,您可以在RegExr上测试它。


3

您可以在regexr.com上测试正则表达式模式,然后在代码中使用它。我用以下内容匹配波斯移动电话号码与Unicode: <\u06F0 to \u06F9> 等同于 <۰-۹>,可以匹配波斯数字,例如: ۰۹۱۹۹۱۹۱۱۲۲

    $("#registerForm").validate({
        rules:{
            mobile:{
                required:true,
                pattern : ^[\u06F0][\u06F0-\u06F9]{3}[\u06F0-\u06F9]{3}[\u06F0-\u06F9]{4},

            },
        },
        messages:{
            mobile:{
                required:"شماره تلفن همراه خود را وارد کنید",
                number:"فقط عدد وارد کنید",
                pattern:"تلفن همراه را به درستی وارد کنید"
            },
        },
        errorClass: "help-inline",
        errorElement: "span",

    });

最好在模式中使用^[\u06F0][\u06F9][\u06F0-\u06F9]{2}[\u06F0-\u06F9]{3}[\u06F0-\u06F9]{4}。因为我们只有在第二个位置上有۹ - Asef Hossini
该模式还应包括 0-9 - Asef Hossini

2

这个模式适用于波斯移动电话号码,包括09123456789۰۹۱۲۳۴۵۶۷۸۹

 mobileRegExp = /(^09[0-9]{9}$)|(^\u06F0\u06F9[\u06F0-\u06F9]{9})$/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接