Angular2 - 只允许在输入中输入字母字符
Angular2 - Only Allow Alpha Characters TO Be Entered In An Input
我是 Angular2
的新手,似乎无法在任何地方找到我的答案。我有一个 input
(如下所示),但我只希望它允许以下内容:
- A-Z
- a-z
- '
- -
- [SPACE]
我不知道该怎么做。我试过 ng-pattern="/^[a-zA-Z\s]*$/"
、pattern="/^[a-zA-Z\s]*$/"
和 ng-pattern-restrict="/^[a-zA-Z\s]*$/"
.
HTML
<td>
<md-input-container>
<input mdInput [(ngModel)]="details.firstName" placeholder="First name(s)" ng-pattern="/^[a-zA-Z\s]*$/">
</md-input-container>
</td>
理想情况下,如果用户输入数字字符,我希望它自己被删除或者不允许(不显示)在字段中
您需要使用以下方法使模式生效
<input mdInput [(ngModel)]="details.firstName" placeholder="First name(s)" [pattern]="'^[a-zA-Z \-\']$'">
使用这个:
ng-pattern="/^[a-zA-Z]*$/"
我的解决方法是在我的组件中完成
firstName: ['', Validators.pattern('^[a-zA-Z \-\']+')],
Angular 反应式表单验证 - 仅接受字母和 space.
firstName: [
'',
[
Validators.required,
Validators.maxLength(50),
Validators.pattern('^[a-zA-Z ]*$')
]
],
您可以使用以下允许键入通过任意正则表达式的字符串的指令
import {Directive, HostListener, Input} from '@angular/core';
@Directive({selector: '[allowedRegExp]'})
export class AllowedRegExpDirective {
@Input() allowedRegExp: string;
@HostListener('keydown',['$event']) onKeyDown(event: any) {
let k=event.target.value + event.key;
if(['ArrowLeft','ArrowRight','ArrowUp','ArroDown','Backspace','Tab','Alt'
'Shift','Control','Enter','Delete','Meta'].includes(event.key)) return;
let re = new RegExp(this.allowedRegExp);
if(!re.test(k)) event.preventDefault();
}
}
用法示例:您问题中的 0-5 个字符
<input [allowedRegExp]="'^[a-zA-Z '-]{0,5}$'" type="text" ... >
我是 Angular2
的新手,似乎无法在任何地方找到我的答案。我有一个 input
(如下所示),但我只希望它允许以下内容:
- A-Z
- a-z
- '
- -
- [SPACE]
我不知道该怎么做。我试过 ng-pattern="/^[a-zA-Z\s]*$/"
、pattern="/^[a-zA-Z\s]*$/"
和 ng-pattern-restrict="/^[a-zA-Z\s]*$/"
.
HTML
<td>
<md-input-container>
<input mdInput [(ngModel)]="details.firstName" placeholder="First name(s)" ng-pattern="/^[a-zA-Z\s]*$/">
</md-input-container>
</td>
理想情况下,如果用户输入数字字符,我希望它自己被删除或者不允许(不显示)在字段中
您需要使用以下方法使模式生效
<input mdInput [(ngModel)]="details.firstName" placeholder="First name(s)" [pattern]="'^[a-zA-Z \-\']$'">
使用这个:
ng-pattern="/^[a-zA-Z]*$/"
我的解决方法是在我的组件中完成
firstName: ['', Validators.pattern('^[a-zA-Z \-\']+')],
Angular 反应式表单验证 - 仅接受字母和 space.
firstName: [
'',
[
Validators.required,
Validators.maxLength(50),
Validators.pattern('^[a-zA-Z ]*$')
]
],
您可以使用以下允许键入通过任意正则表达式的字符串的指令
import {Directive, HostListener, Input} from '@angular/core';
@Directive({selector: '[allowedRegExp]'})
export class AllowedRegExpDirective {
@Input() allowedRegExp: string;
@HostListener('keydown',['$event']) onKeyDown(event: any) {
let k=event.target.value + event.key;
if(['ArrowLeft','ArrowRight','ArrowUp','ArroDown','Backspace','Tab','Alt'
'Shift','Control','Enter','Delete','Meta'].includes(event.key)) return;
let re = new RegExp(this.allowedRegExp);
if(!re.test(k)) event.preventDefault();
}
}
用法示例:您问题中的 0-5 个字符
<input [allowedRegExp]="'^[a-zA-Z '-]{0,5}$'" type="text" ... >