javascript:正则表达式问题

时间:2018-12-07 17:20:25

标签: 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 :(");
        return false;
    } else {
        return true;
    }
}

但是当我输入此文本时:

!65a

该函数返回true(如您所见,正则表达式中不存在“!”字符)

我不是正则表达式方面的专家,所以我认为我在此reg.exp的构建中缺少某些东西。

如何使用此正则表达式?

谢谢。

编辑

很抱歉...我应该在发布问题之前删除对变量“ regexpValidar”的引用。我修改了样本。谢谢@TecBrat

3 个答案:

答案 0 :(得分:2)

您应在正则表达式中提供开始(^)和结束($)标志。现在,您有65a,因为您有备用组。

这应该有效/^([a-zA-z]|[0-9]|[&#,@.ÑñáéíóúÁÉÍÓÚ\|\s])+$/g

演示:https://regex101.com/r/zo2MpN/3

答案 1 :(得分:1)

RegExp.test在字符串中寻找匹配项,它不会验证整个字符串是否与正则表达式匹配。为了进行后者,您需要在正则表达式中添加开始和结束锚点(即,在开始处为“ ^”,在结束处为“ $”,因此您必须在“ ^您的正则表达式这里$”)。

我还刚刚注意到您的正则表达式当前仅匹配一个字符。您可能想在括号后面添加一个“ +”,使其与一个或多个匹配:

"^([a-zA-z]|[0-9]|[&#,@.ÑñáéíóúÁÉÍÓÚ\|\s])+$"

答案 2 :(得分:0)

这是错误的。您使用的变量没有任何内容。试试这个吧。

var regexCompilado = new RegExp(regexNIT);