Angular 4:如何为不允许数字的输入定义自定义验证器?
Angular 4 : How to define custom validator for input which wont allow numbers?
我正在尝试在 angular 4 项目中创建一个自定义验证器,它只允许输入数字以外的字符。
到目前为止,我已经尝试了多种选择,但 none 似乎可行。
我正在做这样的事情:
组件
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
}
};
}
我做错了什么吗?
谢谢
因为你只有一个 regex
你可以只使用 pattern
验证器
city: new FormControl('', Validators.pattern('[A-Za-z]'))
您的正则表达式不正确:
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
我正在尝试在 angular 4 项目中创建一个自定义验证器,它只允许输入数字以外的字符。
到目前为止,我已经尝试了多种选择,但 none 似乎可行。
我正在做这样的事情:
组件
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
}
};
}
我做错了什么吗? 谢谢
因为你只有一个 regex
你可以只使用 pattern
验证器
city: new FormControl('', Validators.pattern('[A-Za-z]'))
您的正则表达式不正确:
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