Angular Директива Regex Alphanumeri c Валидация - PullRequest
0 голосов
/ 21 апреля 2020

Я вроде как новичок в Angular и Regex, и в настоящее время я застрял с проблемой. Мне нужно создать директиву Angular, которая позволяет полю ввода выполнять следующие действия:

  1. Alphanumeri * только 1025 *
  2. Первый ввод должен быть буквой
  3. Один пробел только между словами
  4. Никаких специальных символов

Я сделал цифры 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();
   }
  }  
 }

И здесь - это пример вывода с некоторыми символами, которые я хочу отрицать

Буду признателен за помощь, спасибо

...