Angular 4:如何为不允许数字的输入定义自定义验证器?

时间:2017-08-10 12:12:03

标签: javascript angular validation typescript angular-forms

我正在尝试在角度4项目中创建一个自定义验证器,它只允许键入除数字以外的字符。

到目前为止,我尝试了多种选择,但似乎都没有。

我正在做这样的事情:

组件

ngOnInit() {
  this.form = new FormGroup({
    ...
    city: new FormControl('', validateCity)
  });
}

验证

import { FormControl } from '@angular/forms';

function validateCity(c: FormControl) {
  let CITY_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]/i;

  return CITY_REGEXP.test(c.value) ? null : {
    validateCity: {
      valid: false
    }
  };
}
我做错了什么? 感谢

2 个答案:

答案 0 :(得分:3)

由于您只有regex,因此您可以使用pattern验证程序

city: new FormControl('',  Validators.pattern('[A-Za-z]'))

答案 1 :(得分:1)

您的正则表达式不正确:



let CITY = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]/i;
console.log(CITY.test('Hello9'))




你需要一个只匹配字符和空格的正则表达式:



let re=/^[A-Za-z ]+$/

console.log (re.test('Barcelona')) //true
console.log(re.test('Los Angeles')) //true
console.log(re.test('Paris 9')) //false




但也许你需要允许重音符号,变音符号...所以你可以查看SO question