我正在尝试使用以下代码验证输入文本字段的值:
function onBlurTexto(value) {
var regexNIT = "([a-zA-z]|[0-9]|[&#,@.ÑñáéíóúÁÉÍÓÚ\|\s])";
regexCompilado = new RegExp(regexNIT);
if (!(regexCompilado.test(value))) {
alert("Wrong character in text :(");
return false;
} else {
return true;
}
}
但是当我输入此文本时:
!65a
该函数返回true(如您所见,正则表达式中不存在“!”字符)
我不是正则表达式方面的专家,所以我认为我在此reg.exp的构建中缺少某些东西。
如何使用此正则表达式?
谢谢。
编辑
很抱歉...我应该在发布问题之前删除对变量“ regexpValidar”的引用。我修改了样本。谢谢@TecBrat
答案 0 :(得分:2)
您应在正则表达式中提供开始(^)和结束($)标志。现在,您有65a,因为您有备用组。
这应该有效/^([a-zA-z]|[0-9]|[&#,@.ÑñáéíóúÁÉÍÓÚ\|\s])+$/g
答案 1 :(得分:1)
RegExp.test在字符串中寻找匹配项,它不会验证整个字符串是否与正则表达式匹配。为了进行后者,您需要在正则表达式中添加开始和结束锚点(即,在开始处为“ ^”,在结束处为“ $”,因此您必须在“ ^您的正则表达式这里$”)。
我还刚刚注意到您的正则表达式当前仅匹配一个字符。您可能想在括号后面添加一个“ +”,使其与一个或多个匹配:
"^([a-zA-z]|[0-9]|[&#,@.ÑñáéíóúÁÉÍÓÚ\|\s])+$"
答案 2 :(得分:0)
这是错误的。您使用的变量没有任何内容。试试这个吧。
var regexCompilado = new RegExp(regexNIT);