JavaScript中两个字符串的匹配
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript中两个字符串的匹配,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5897字,纯文字阅读大概需要9分钟。
内容图文
![JavaScript中两个字符串的匹配](/upload/InfoBanner/zyjiaocheng/305/13914dd611bc42d894bcdd6f1dd7e95c.jpg)
*代表一个任意长度的字符串,而?则代表一个字符
要求可以提示出两个冲突
<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<strNoX.length)
{
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<str1.length ;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;
}
其中*最起码为一个字符,以上程序并没有对输入的合法性进行验证
内容总结
以上是互联网集市为您收集整理的JavaScript中两个字符串的匹配全部内容,希望文章能够帮你解决JavaScript中两个字符串的匹配所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。