我需要验证字符串是否不是以“;”开头和结尾。并且如果仅出现“;”如果此特殊字符位于字符串内(不在开头,不在结尾)。我认为在这种情况下我必须使用正则表达式

例如 :

var regex =new RegExp("^\w+;\w+", "g"); ;

var test = ';azerty1;azerty2;azerty3'; //invalid
var test2 = 'azerty1;azerty2;azerty3'; //valid
var test3 = 'azerty1;azerty2;azerty3;'; //invalid
var test4 = 'azerty1;azerty2;;azerty3'; //invalid
var test5 = 'azerty1;azerty2;azerty3;azerty4'; //valid
var test6 = ';;azerty1;azerty2;azerty3;azerty4'; //invalid
var test7 = 'azerty1;azerty2;azerty3;azerty4;;'; //invalid
var test8 = 'azerty1azerty2azerty3azerty4'; //valid

var array = [test , test2 ,test3 ,test4 ,test5 ,test6 ,test7 , test8];

for(var i= 0; i < array.length; i++)
{
     if(regex.test(array[i]))
      {
        alert("TRUE");
      }
      else
      {
        alert("FALSE");
      }
}


任何帮助,将不胜感激
非常感谢你

最佳答案

您需要将引用放入变量中才能进行检查。还要将正则表达式更改为/^\w+(;\w+)*$/或需要转义\new RegExp("^\\w+(;\\w+)*$"))的字符串格式。最后,修饰符g与正则表达式无关,因为它是由^$锚定的。



// var regex = new RegExp("^\\w+(;\\w+)*$"); // there is no need to construct regex from string
var regex = /^\w+(;\w+)*$/;

var test = ';azerty1;azerty2;azerty3'; //invalid
var test2 = 'azerty1;azerty2;azerty3'; //valid
var test3 = 'azerty1;azerty2;azerty3;'; //invalid
var test4 = 'azerty1;azerty2;;azerty3'; //invalid
var test5 = 'azerty1;azerty2;azerty3;azerty4'; //valid
var test6 = ';;azerty1;azerty2;azerty3;azerty4'; //invalid
var test7 = 'azerty1;azerty2;azerty3;azerty4;;'; //invalid

var array = [test, test2, test3, test4, test5, test6, test7];

for (var i = 0; i < array.length; i++) {
  console.log(array[i] + ' : ' + regex.test(array[i]));
}

关于javascript - 正则表达式匹配JavaScript中的特定字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37970958/

10-10 21:41
查看更多