我的角度为5" angular2-text-mask":" ^ 8.0.4" https://github.com/text-mask/text-mask/tree/master/angular2
我尝试做的是阻止用户输入特殊字符,但 - ,_,'除外,应该允许name type="text"
输入。
这适用于电话号码:
<input [textMask]="{mask: mask}" [(ngModel)]="myModel" type="text"/>
public myModel = ''
public mask = ['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]
但是当我尝试接受多个字母的public mask = [/^[a-zA-Z]+$/];
时,我只能写一个。怎么了?
我希望能够输入无限的字母,数字和 - ,_,&#39;
感谢任何帮助。
答案 0 :(得分:2)
此文本掩码不是正则表达式。文档说明
mask
是一个数组或函数,用于定义用户输入的方式 将被掩盖。数组中的每个元素都必须是字符串或正则表达式。每个字符串都是掩码中的固定字符,每个正则表达式都是一个接受用户输入的占位符。
你的面具是一个包含一个字符的数组。这意味着它只接受一个匹配/^[a-zA-Z]+$/
的字符。
如果你想要多个字符,你需要为每个字符添加一个正则表达式数组,如下所示:
public mask = [/[a-zA-Z]/, /[a-zA-Z]/, /[a-zA-Z]/];
这个面具会接受三个字母。
答案 1 :(得分:1)
我知道这是几个月前发生的,但是我找到了一种方法。
您可以创建一个函数,该函数接收原始值作为参数并返回一个regexp数组。
因此,您基本上只收到原始值,计算长度,然后将掩码推到数组。
我是这样做的:
<input [textMask]="{mask: nameMask, guide: false}" [(ngModel)]="myModel" type="text"/>
nameMask(rawValue: string): RegExp[] {
const mask = /[A-Za-z]/;
const strLength = String(rawValue).length;
const nameMask: RegExp[] = [];
for (let i = 0; i <= strLength; i++) {
nameMask.push(mask);
}
return nameMask;
}