【问题标题】:Regex for Persian number波斯数字的正则表达式
【发布时间】:2015-01-24 08:07:03
【问题描述】:

我想创建 JavaScript 正则表达式来检查 (U+06F0 to U+06F9) or (0-9) 范围内的文本框的值 我该如何构建它?

【问题讨论】:

    标签: javascript regex farsi


    【解决方案1】:

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

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

    + 重复上一个令牌一次或多次。

    【讨论】:

    • 你为什么使用“u0F90-9”?
    • @Hamid 计数正确。他正在使用\u06F0-\u06F9 和0-9,完全符合您的要求。
    • @Hamid 将\u06F0-\u06F9 和0-9 视为单独的部分。正则表达式引擎也像这样解析..
    【解决方案2】:

    您可以在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}。因为我们只有۹ 在第二位。
    • 该模式也应该覆盖0-9。
    【解决方案3】:

    我根据我的搜索建议这种模式:

    pattern = "^([\u06F0]|[0])([\u06F9]|[9])(([\u06F0-\u06F9]|[0-9]){2})(([\u06F0-\u06F9]|[0-9]){3})(([\u06F0-\u06F9]|[0-9]){4})"
    

    这有点复杂,但如果您想以Persian phone number 格式输入波斯语和英语数字,则可以使用。我刚刚将| 用作or,括号用于分组。正如@ahmad_mhm 提到的,您可以在RegExr 上对其进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 2018-01-29
      • 2017-01-04
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多