通过指令输入掩码

时间:2017-07-28 09:20:24

标签: regex angular typescript angular-directive

我希望输入符合以下格式:

[00-23]:[00-59]

我们使用angular 2.4,因此我们没有pattern指令可用,我不能使用外部库(primeNG)。

所以我试图为此做出指示:

@HostListener('keyup', ['$event']) onKeyUp(event) {
    var newVal = this.el.nativeElement.value.replace(/\D/g, '');
    var rawValue = newVal;
    // show default format for empty value
    if(newVal.length === 0) {
        newVal = '00:00';
    } 
    // don't show colon for empty groups at the end
    else if(newVal.length === 1) {
        newVal = newVal.replace(/^(\d{1})/, '00:0$1');
    } else {
        newVal = newVal.replace(/^(\d{2})(\d{2})/, '$1:$2');
    }
    // set the new value
    this.el.nativeElement.value = newVal;
}

这适用于我输入的前2位数字。

开始字符串:

00:00

按下小键盘1:

00:01

按下小键盘2:

00:12

但是我得到的第三个数字:

00:123

而不是01:2300:1234而不是12:34

退格按预期工作。

仅使用指令是否有解决此问题的方法?

1 个答案:

答案 0 :(得分:0)

在上一次rejex尝试replace(/^(\d{0,2})(\d{0,2})/g, '$1:$2')。希望这会有所帮助。