Я вроде как новичок в Angular и Regex, и в настоящее время я застрял с проблемой. Мне нужно создать директиву Angular, которая позволяет полю ввода выполнять следующие действия:
- Alphanumeri * только 1025 *
- Первый ввод должен быть буквой
- Один пробел только между словами
- Никаких специальных символов
Я сделал цифры 1-3, моя проблема входит в # 4. Ввод по-прежнему принимает '_', '`', '&', 'ˆ' и некоторые другие специальные символы. Мне просто нужно отменить все специальные символы.
Вот моя директива:
export class AlphaNumericFieldDirective{
private regex: RegExp = new RegExp(/^[a-zA-Z]([a-zA-Z0-9]+ ?)*$/);
private specialKeys: Array<string> = ['Backspace', 'Space', 'Tab', 'End', 'Home'];
constructor(private el: ElementRef) {}
@HostListener('keydown', ['$event'])
onKeyDown(event: KeyboardEvent) {
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();
}
}
}
И здесь - это пример вывода с некоторыми символами, которые я хочу отрицать
Буду признателен за помощь, спасибо