当我在阵列上测试时,为什么我的正则表达式会变回错误?

时间:2015-04-02 19:25:25

标签: javascript jquery html regex validation

第一次尝试写一个正则表达式 我正在尝试创建一个匹配1234567-89-0234的格式 我创建的正则表达式是; / ^([0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] - [0-9] [0-9] - [0-9] [0-9] [0-9] [0-9])$ / 然而,它仍然是假的,也许它在我的脚本中也是一个错误

    function showAnamneseFisico()


{
      function nullCheck() { 
var y = /^([0-9][0-9][0-9][0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9][0-9][0-9])$/; 
var x = $("#nidNumber");
 for (i = 0; i < x.length; i++)
if (x[i].test(y) === false){
  return 0;
}
 }

    if (nullCheck() === 0) {
      alert ('Você ainda não tenham completado o preenchimento da tabela de Numeros NID. Faz favor, verifique que você respondeu a cada pergunta e submeter mais uma vez.');
}
  else if ($("#formNotCompleteResponse").val() === ''){
    alert ('Você ainda não tenham completado o preenchimento porque você não prover um razão que nao fez todo deste formulário. Faz favor, prover uma resposta a esse pergunta e submeter mais uma vez.');
  }
  else {    
    $("#anamneseFisico").show();
    $("#buttonExame").show();
    $("#buttonNid").hide();
  }
}

2 个答案:

答案 0 :(得分:1)

问题是-的转义只是[]内的特殊字符。

另一方面,包装支架是不必要的。

以下是较短版本:^\d{7}-\d{2}-\d{4}$

答案 1 :(得分:0)

所以,正确的方法是:

/\d{7}-\d{2}-\d{4}/.test("string"); //returns a boolean - would match the pattern in a string.

如果您想要严格匹配,例如仅限图案,则:

/^\d{7}-\d{2}-\d{4}$/.test("string");

或者

"string".match(/\d{7}-\d{2}-\d{4}/); //returns an array of matches or null
"string".match(/^\d{7}-\d{2}-\d{4}$/); //pattern only match

因此,您的代码变为:

function nullCheck() { 
    var y = /\d{7}-\d{2}-\d{4}/; // or /^\d{7}-\d{2}-\d{4}$/
    var x = $("#nidNumber");
    return y.test(x.val()); // returns true or false
}