gpt4 book ai didi

javascript - RegEx 在指令中不起作用 - Angular 4

转载 作者:行者123 更新时间:2023-11-30 20:14:35 37 4
gpt4 key购买 nike

我创建了一个指令来验证用户在文本字段中输入的内容。用户可以输入数字、点和逗号,但不能输入任何其他内容。

验证器在输入数字时有效,但我无法输入逗号和点。

import { Directive, ElementRef, HostListener } from '@angular/core';

@Directive({
selector: '[appInputValidator]'
})
export class InputValidatorDirective {

private regex: RegExp = new RegExp(/^[0-9]{1,2}([,.][0-9]{1,2})?$/);

// Allow key codes for special events
// Backspace, tab, end, home
private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home'];

constructor(private el: ElementRef) {
}

@HostListener('keydown', ['$event'])
onKeyDown(event: KeyboardEvent) {
debugger
// Allow Backspace, tab, end, and home keys
if (this.specialKeys.indexOf(event.key) !== -1) {
return;
}

let current: string = this.el.nativeElement.value;
let next: string = current.concat(event.key);
if (next && !String(next).match(this.regex)) {
event.preventDefault();
}
}

我已经在线测试了正则表达式,它适用于数字、点和逗号,但在应用程序中我无法输入点或逗号。怎么了?

最佳答案

你可以使用

private regex: RegExp = /^[0-9]{1,2}([,.][0-9]{0,2})?$/;
^

请注意,{0,2} 量词使 [0-9] 匹配,一个或两个数字,因此 2. 类似的值将不再阻止用户输入带小数部分的数字。

关于javascript - RegEx 在指令中不起作用 - Angular 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52052853/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com