特殊字符验证未按预期工作

时间:2018-12-27 16:05:22

标签: javascript jquery asp.net

我正在尝试将正则表达式验证应用于文本框用户控件,并且仅当我在文本框中的文本末尾输入内容时才起作用。而且当我在文本中间的某个地方键入内容时,它就无法正常工作。

例如:嘿,伙计! (当我在文本末尾键入“!”时,我的代码可以正常工作)              嘿!男子! (但是当我在输入整个文本后在文本中间的某个地方插入“!”时,则无法正常工作

下面是我的代码:

$("textarea[id$=<%= TxtValue.ClientID %>]").keyup(function () {
            var txt = $(this).val();
            var regex = new RegExp('[^0-9a-zA-Z-,_.\:\s]+$');
            var vldttxt = regex.test(txt);
            if (txt.length > 0 && vldttxt === true) {
                alert("Error");
            }
            var noSpclChar = txt.replace(regex, "");
            this.value = noSpclChar;
        });

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:1)

这应该有效。您结尾的$是阻止它匹配字符串中的任何内容的原因:

$("textarea[id$=<%= TxtValue.ClientID %>]").keyup(function () {
            var txt = $(this).val();
            var regex = new RegExp('[^0-9a-zA-Z-,_.\:\s]+');
            var vldttxt = regex.test(txt);
            if (txt.length > 0 && vldttxt === true) {
                alert("Error");
            }
            var noSpclChar = txt.replace(regex, "");
            this.value = noSpclChar;
        });

答案 1 :(得分:1)

>最简单的代码....特殊字符验证

  function checkForm(theForm) {
     var result = /^[a-z0-9\\.;,:'\\s]{1,100}$/i(theForm.data.value);

     if (!result) {
        alert("No legal characters entered");
     }

     return !!result;
  }