使用text-mask指令进行正则表达式月验证

时间:2017-03-29 06:52:25

标签: javascript regex angular typescript ionic2

我正在使用text-mask angular2指令和ionic2.I有一个月JS正则表达式,如bthib@bthib-cyberstorm ~ $ cd pythonpractice bthib@bthib-cyberstorm ~/pythonpractice $ python ./binary_to_string.py > binary1.txt /usr/bin/python: can't find '__main__' module in './binary_to_string.py' 。它工作正常。但是现在我需要将它应用于上面的指令。我有尝试如下。但它不起作用。你能告诉我为什么吗?

/^(0[1-9]|1[0-2])$/

2 个答案:

答案 0 :(得分:2)

数组中的每个元素都限制用户可以输入的char。看起来他们不是上下文。 [/0[1-9]/, /1[0-2]/]表示第一个符号可以包含0和来自19的数字,第二个符号应该以{{1​​}}开头,然后跟随{ {1}},10 - 总是错误的。

您可以使用近似掩码,如

1

如果输入2this.mask = [/[01]/, /\d/]; ,则第一个占位符有效,第二个占位符对任何数字都有效。

为了确保输入月份值,我建议为提交验证添加0

答案 1 :(得分:0)

mask数组中的每个元素都限制用户可以输入的字符。例如,mark = [/[1-9]/, /\d/]表示用户只能在第一个占位符中输入1到9之间的数字,之后只能在占位符中输入一个数字。

在您的情况下,标记(/0[1-9]/, /1[0-2]/)的每个元素都为整个输入字符串定义了一个有效模式,而不是每个字符。这就是为什么它没有用。

根据text-mask angular2 document,您还可以传递一个函数作为掩码。你应该尝试这样的事情

this.mask = function(rawValue) {
        // add logic to generate your mask array  
        if (rawValue && rawValue.length > 0) {
            if (rawValue[0] == '0') {
                return [/[01]/, /[1-9]/];
            } else {
                return [/[01]/, /[0-2]/];
            }
        }
        return [/[01]/, /[0-9]/];
   }