我正在尝试将正则表达式验证应用于文本框用户控件,并且仅当我在文本框中的文本末尾输入内容时才起作用。而且当我在文本中间的某个地方键入内容时,它就无法正常工作。
例如:嘿,伙计! (当我在文本末尾键入“!”时,我的代码可以正常工作) 嘿!男子! (但是当我在输入整个文本后在文本中间的某个地方插入“!”时,则无法正常工作
下面是我的代码:
$("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;
});
任何帮助将不胜感激!谢谢!
答案 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;
}