正则表达式匹配javascript中的特定字符串

时间:2016-06-22 14:24:54

标签: javascript regex

我需要验证字符串是否不是以";" 开头并且如果只有一次出现";&# 34; 如果这个特殊字符在字符串内(不是在开头,而不是在结尾)。在这种情况下,我必须使用正则表达式,我认为

例如:

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");
      }
} 

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

4 个答案:

答案 0 :(得分:2)

es6开始,我们将受益于String.includesString.startsWithString.endsWith以及许多很酷的功能,但在所有浏览器实施和支持之前您, 可以使用这个解决方案:

String.prototype.startsWith = function(str){
    var regex = new RegExp('^'+str);
    return  regex.test(this); 
}

String.prototype.endsWith = function(str){
    var regex = new RegExp(str+'$');
    return  regex.test(this); 
}

// String.contains in this case has a special behavior 
String.prototype.contains = function(str){    
    var tmp = this.split(str);
    return !this.startsWith(str) && tmp.length >= 2 && !this.endsWith(str);
}

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];

array.map(function(item){
    if(item.contains(';')){
        console.log('valid');
    }else{
        console.log('invalid');
    }
});

答案 1 :(得分:1)

您需要将引用放在变量中以便检查它们。同时将正则表达式更改为\或以字符串格式更改为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])); }为基础。

protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            string data = string.Empty;

            // Determine if session has Single Sign On credentials
            if (Request.Form["Rams"] != null)
            {
                data = RamsLogin();
            }

答案 2 :(得分:1)

您可以使用:/^((\w+);)*\w+$/gm

&#13;
&#13;
var regex = /^((\w+);)*\w+$/gm; ;

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++)
{
     if(regex.test(array[i]))
      {
        console.log("TRUE for " + array[i]);
      }
      else
      {
        console.log("FALSE for " + array[i]);
      }
}
&#13;
&#13;
&#13;

答案 3 :(得分:1)

关于

  

我需要验证一个字符串是否没有以&#34 ;;&#34;开头和结尾?如果只有一次出现&#34;;&#34;如果这个特殊字符在字符串内(不是在开头,而不是在结尾)。

有两个问题:

所以,使用

var regex = /^\w+;\w+$/;

这只匹配一个以1+个字符开头的字符串;,以及1个字符字符结尾。

另外,当事先知道正则表达式模式时,请避免使用构造函数表示法,使用正则表达式文字表示法(这是一般的最佳实践)。