我需要验证字符串是否不是以";" 开头并且如果只有一次出现";&# 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");
}
}
任何帮助将不胜感激 非常感谢你
答案 0 :(得分:2)
从es6开始,我们将受益于String.includes,String.startsWith,String.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
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;
答案 3 :(得分:1)
关于
我需要验证一个字符串是否没有以&#34 ;;&#34;开头和结尾?如果只有一次出现&#34;;&#34;如果这个特殊字符在字符串内(不是在开头,而不是在结尾)。
有两个问题:
$
(以便在比赛结尾处锚定比赛)/g
modifier with RegExp#test()
所以,使用
var regex = /^\w+;\w+$/;
这只匹配一个以1+个字符开头的字符串;
,以及1个字符字符结尾。
另外,当事先知道正则表达式模式时,请避免使用构造函数表示法,使用正则表达式文字表示法(这是一般的最佳实践)。