JavaScript正则表达式测试函数在第一个true之后总是返回false

时间:2016-01-13 12:21:56

标签: javascript jquery html regex

我正在编写一个小函数来验证PowerController.IsPortOn(portNumber); // This number is 1-based 中的字符输入。 我的正则表达式只允许字符A-Z,句号和逗号。

只有在我第一次输入时,验证才会返回textarea。然后它只返回true,无论我输入什么字符。这很令人困惑。 你能帮忙吗?

以下是该功能。



false

var _checkRemainingCharsWords = function() {
  $('#textarea-content').on('input', function() {
    var regExNumbers = /^[a-zA-Z,.]+$/;
    var strTest = regExNumbers.test(this.value);
    if (strTest) {
      console.log("valid", this.value);

    } else {
      console.log("wrong", this.value);
      return false;
    }
  });
};

_checkRemainingCharsWords();




1 个答案:

答案 0 :(得分:0)

如果要阻止key,则需要使用keydown功能和无效字符,使用event.preventDefault()或使用keyup并替换所有无效字符。对于演示,我添加了一个简单的正则表达式来替换数字。



var _checkRemainingCharsWords = function() {
  $('#textarea-content').on('keyup', function() {
    var regExNumbers = /^[a-zA-Z,.]+$/;
    var strTest = regExNumbers.test(this.value);
    if (this.value) {
      if (strTest) {
        console.log("valid", this.value);
      } else {
        console.log("wrong", this.value);
        var numReg = /\d/gi;
        this.value = this.value.replace(numReg,'');
        return false;
      }
    }
  });
};

_checkRemainingCharsWords();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<textarea id="textarea-content"></textarea>
&#13;
&#13;
&#13;