javascript:正则表达式的问题
我试图用以下代码验证输入文本字段的值:javascript:正则表达式的问题,javascript,regex,Javascript,Regex,我试图用以下代码验证输入文本字段的值: function onBlurTexto(value) { var regexNIT = "([a-zA-z]|[0-9]|[&#,@.ÑñáéíóúÁÉÍÓÚ\|\s])"; regexCompilado = new RegExp(regexNIT); if (!(regexCompilado.test(value))) { alert("Wrong character in text :(");
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您应该为正则表达式提供开始(^)和结束($)标志。现在您正在匹配65a,因为您有备用集 这应该有效([a-zA-z]|[0-9]|[,@.ññáíúÁÍÓÚ|s])+$/g
演示:您应该为正则表达式提供开始(^)和结束($)标志。现在您正在匹配65a,因为您有备用集 这应该有效([a-zA-z]|[0-9]|[,@.ññáíúÁÍÓÚ|s])+$/g
演示:RegExp.test在字符串中查找匹配项,它不会验证整个字符串是否与regex匹配。为了实现后者,您需要将开始和结束锚添加到正则表达式中(即开始处为“^”,结束处为“$”,因此您有“^your regex here$”) 我还注意到你的正则表达式目前只匹配一个字符。您可能希望在参数后添加一个“+”,以便它与一个或多个:
"^([a-zA-z]|[0-9]|[&#,@.ÑñáéíóúÁÉÍÓÚ\|\s])+$"
test会在字符串中查找匹配项,但不会验证整个字符串是否与regex匹配。为了实现后者,您需要将开始和结束锚添加到正则表达式中(即开始处为“^”,结束处为“$”,因此您有“^your regex here$”) 我还注意到你的正则表达式目前只匹配一个字符。您可能希望在参数后添加一个“+”,以便它与一个或多个:
"^([a-zA-z]|[0-9]|[&#,@.ÑñáéíóúÁÉÍÓÚ\|\s])+$"
这是错误的。您使用的变量没有任何内容。试试这个
var regexCompilado = new RegExp(regexNIT);
这是错误的。您使用的变量没有任何内容。试试这个
var regexCompilado = new RegExp(regexNIT);
我错过了什么。您有没有值的
regexpValidar
和没有使用的regexNIT
。使用if(/^[a-zA-Z0-9,@.ññáíóúÍÓ|s]+$/.test(value)){…
。请注意。如果允许使用空字符串,请将+
替换为*
。如果|
用作OR运算符,只需将其从字符类中删除(因为它被视为文字管道字符)。请注意,在字符串文字中,所有反斜杠必须加倍以表示文字反斜杠“\s”
=“s”
在JS中,您可能指的是A-Z
范围。返回true是因为它与单个字符6匹配,而不是因为!我错过了什么。您有没有值的regexpValidar
和没有使用的regexNIT
。使用if(/^[a-zA-Z0-9,@.ññáíóúÍÓ|s]+$/.test(value)){…
。请注意。如果允许使用空字符串,请将+
替换为*
。如果|
用作OR运算符,只需将其从字符类中删除(因为它被视为文字管道字符)。请注意,在字符串文字中,所有反斜杠必须加倍以表示文字反斜杠“\s”
=“s”
在JS中,您可能指的是A-Z
范围。返回true是因为它与单个字符6匹配,而不是因为!这只匹配一个字符。即使提供了字符串'65a'
,它也不会匹配。我不认为这是OP的意图。否则答案很好。@JohanWentholt谢谢,你是对的。更新的答案。这只匹配一个字符。即使提供了字符串'65a'
,它也不会匹配。我不认为这是OP的意图。否则答案很好。@JohanWentholt谢谢,你是对的。更新的答案。谢谢@大家的友好回答!!!!我确信缺少了一些东西(开始(^)和结束($)标志)。现在我把这个regexp应用到工作中。谢谢大家的友好回答!!!!我确信缺少了一些东西(开始(^)和结束($)标志)。现在我让这个regexp工作了。谢谢Alexandros。与@TecBrat的评论相同。谢谢Alexandros。与@TecBrat的评论相同。