2017-08-10 77 views
0

我正在尝试在角度4项目中创建一个自定义验证器,该项目只允许输入数字以外的字符。角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 
    } 
    }; 
} 

我做错了什么? 感谢

+0

能否请您plunker /小提琴? –

回答

3

既然你只是有一个regex你可以只使用pattern验证

city: new FormControl('', Validators.pattern('[A-Za-z]')) 
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