Javascript Angular2使用regexp验证输入
我想在正则表达式中定义符号的数量Javascript Angular2使用regexp验证输入,javascript,regex,angular,Javascript,Regex,Angular,我想在正则表达式中定义符号的数量 _keyPress(ptrn: string, event: any) { const pattern = new RegExp(ptrn); const inputChar = String.fromCharCode(!event.charCode ? event.which : event.charCode); const value = event.target.value; if (!pattern.test(inputC
_keyPress(ptrn: string, event: any) {
const pattern = new RegExp(ptrn);
const inputChar = String.fromCharCode(!event.charCode ? event.which : event.charCode);
const value = event.target.value;
if (!pattern.test(inputChar) && !pattern.test(value)) {
event.preventDefault();
return false;
}
}
html:
但如果我使用数量量词,它就不起作用了。谁能说出哪里出了问题?
首先
事件。charCode
返回a-z
的97
和122
之间的数字。因此,pattern.test(inputChar)
测试总是失败,因为您试图将数字与字母表进行比较。因此,将inputChar
更改为以下内容:
const inputChar=String.fromCharCode(event.key?event.which:event.key)代码>
此外,需要使用用户输入的下一个键更新值:
const value=(event.target.value)+inputChar代码>
我假设您试图限制用户输入除a-z
之外的任何键,并且只允许他们输入最多6个字母。因此,最终测试需要一个|
标志,而不是&&
,因为当两个测试都通过时,而不仅仅是其中一个通过时,应该允许输入
if (!pattern.test(inputChar) || !pattern.test(value)) {
event.preventDefault();
return false;
}
这是您的Plnkr。请尝试将0
设置为最小值-[a-z]{0,6}
。如果锚需要完整的字符串匹配-^[a-z]{0,6}$
是否在您试图在function@WiktorStribiżew不,它不起作用
if (!pattern.test(inputChar) || !pattern.test(value)) {
event.preventDefault();
return false;
}