*代表一个任意长度的字符串,而?则代表一个字符
要求可以提示出两个冲突
<input type="text" id="str1"><br>
<input type="text" id="str2"><br>
<input type="button" onclick="checkmarchx()" value="check">
用javascript实现代码如下:
[javascript]
function checkmarchx()
{
var str1 = document.getelementbyid('str1').value;
var str2 = document.getelementbyid('str2').value;
var str1xposition = str1.indexof('*');
var str2xposition = str2.indexof('*');
if(str1xposition!=-1 && str2xposition!=-1)//两者都含有*
{
var position = str1xposition>str2xposition?str2xposition:str1xposition;//success
if(position!=0)
{
var patbeforestr1 = str1.substring(0,position);
var patbeforestr2 = str2.substring(0,position);
if(checkmarchq(patbeforestr1,patbeforestr2))
{
//alert(str1+'与'+str2+前半部分冲突);
//然后对应后半部分进行测试
var str1xbackposition = str1.length-str1xposition-1;
var str2xbackposition = str2.length-str2xposition-1;
var backposition = str1xbackposition>str2xbackposition?str2xbackposition:str1xbackposition;
if (backposition==0)
{
alert(str1+'与'+str2+冲突);
}
else
{
var patbackstr1 = str1.substring(str1.length-backposition,str1.length);
var patbackstr2 = str2.substring(str2.length-backposition,str2.length);
if(checkmarchq(patbackstr1,patbackstr2))
{
alert(str1+'与'+str2+冲突);
}
}
}
}
else
{
//alert(str1+'与'+str2+前半部分冲突);
var str1xbackposition = str1.length-str1xposition-1;
var str2xbackposition = str2.length-str2xposition-1;
var backposition = str1xbackposition>str2xbackposition?str2xbackposition:str1xbackposition;
if (backposition==0)
{
alert(str1+'与'+str2+冲突);
}
else
{
var patbackstr1 = str1.substring(str1.length-backposition,str1.length);
var patbackstr2 = str2.substring(str2.length-backposition,str2.length);
if(checkmarchq(patbackstr1,patbackstr2))
{
alert(str1+'与'+str2+冲突);
}
}
}
}
else if((str1xposition==-1 && str2xposition!=-1)||(str1xposition!=-1 && str2xposition==-1))//有且只有一个字符串含有*
{
var strx = str1xposition==-1?str2:str1;//含有*的字符串
var strnox = str1xposition==-1?str1:str2;//不含*的字符串
if (strx.length-1
var position = strx.indexof('*');
if(position==0)
{
//alert(str1+'与'+str2+前半部分冲突);
var backposition = strx.length-position-1;
if (backposition==0)
{
alert(str1+'与'+str2+冲突);
}
else
{
var patbackstr1 = str1.substring(str1.length-backposition,str1.length);
var patbackstr2 = str2.substring(str2.length-backposition,str2.length);
if(checkmarchq(patbackstr1,patbackstr2))
{
alert(str1+'与'+str2+冲突);
}
}
}
else
{
var patbeforestr1 = str1.substring(0,position);
var patbeforestr2 = str2.substring(0,position);
if(checkmarchq(patbeforestr1,patbeforestr2))
{
//alert(str1+'与'+str2+前半部分冲突);
var backposition = strx.length-position-1;
if (backposition==0)
{
alert(str1+'与'+str2+冲突);
}
else
{
var patbackstr1 = str1.substring(str1.length-backposition,str1.length);
var patbackstr2 = str2.substring(str2.length-backposition,str2.length);
if(checkmarchq(patbackstr1,patbackstr2))
{
alert(str1+'与'+str2+冲突);
}
}
}
}
}
}
else
{
if(checkmarchq(str1,str2))
{
alert(str1+'与'+str2+冲突);
}
}
}
function checkmarchq(str1,str2)
{
var flagque = false;
if(str1.length==str2.length)
{
//长度相同才有可能冲突
for (var i=0 ;i
if(str1.substr(i,1)!='?' && str2.substr(i,1)!='?')
{
if(str1.substr(i,1)!=str2.substr(i,1))
{
flagque = false;//表示不冲突
break;
}
else
{
flagque = true;//表示冲突
}
}
}
}
return flagque;
}
其中*最起码为一个字符,以上程序并没有对输入的合法性进行验证