为什么当我在数组上测试regex时,它会返回false

Why is my regex coming back false when I test it on my array?

本文关键字:false 返回 regex 测试 数组 为什么      更新时间:2023-09-26

第一次尝试编写正则表达式我正在尝试创建一个匹配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][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();
  }
}

问题是-的转义,它在[]中只是一个特殊的字符。

附带说明一下,包装支架是不必要的。

这是一个较短的版本:^'d{7}-'d{2}-'d{4}$

因此,正确的方法是:

/'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
}