Мне нужен собственный валидатор, чтобы забанить определенный список запрещенных слов из поля textarea.Мне нужен именно этот тип реализации, я знаю, что логически неправильно разрешать пользователю вводить часть запроса, но это именно то, что мне нужно.
Я пытался с помощью regExp, но у него странное поведение.
My RegExp
/(drop|update|truncate|delete|;|alter|insert)+./gi
my Validator
export function forbiddenWordsValidator(sqlRe: RegExp): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } | null => {
const forbidden = sqlRe.test(control.value);
return forbidden ? { forbiddenSql: { value: control.value } } : null;
};
}
my formControl:
whereCondition: new FormControl("", [
Validators.required,
forbiddenWordsValidator(this.BAN_SQL_KEYWORDS)...
Работает только в определенных случаях, а я нетпонять, почему одна и та же строка работает один раз и не работает, если я удаляю символ и перезаписываю его, а иногда, если я набираю пробел, валидатор возвращает ok.