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;
    }