如果我想从JD
搜索var str="KD-S35JWD"
,如何修改此代码..我试试这个但不起作用:
<script type="text/javascript">
var str = "KD-R435jwd";
var hasUD;
var hasJD;
var hasED;
var hasEED;
var patt1 = str.match(/U/gi);
var patt2 = str.match(/J/gi);
var patt3 = str.match(/E/gi);
var patt4 = str.match(/EE/gi);
var patt5 = str.match(/D/gi);
if (patt1 && patt5) {
hasUD = 'UD';
document.write(hasUD);
} else if (patt2 && patt5 {
hasJD = 'JD';
document.write(hasJD);
} else if (patt3 && patt5) {
hasED = 'ED';
document.write(hasED);
} else {
hasEED = 'EED';
document.write(hasEED);
</script>
答案 0 :(得分:1)
如果你想要它们连续:
if(str.indexOf("UD") != -1)
{
document.write("UD");
}
if(str.indexOf("JD") != -1)
{
document.write("JD");
}
如果有任何重要因素:
var dInd = str.indexOf("D");
if(dInd != -1 && str.indexOf("U") != -1)
{
document.write("UD");
}
if(dInd != -1 && str.indexOf("J") != -1)
{
document.write("JD");
}
答案 1 :(得分:0)
您发布的代码是正确的,除了一点:在JavaScript中,elseif
应为else if
。
如果字符串可能同时包含两个字符组合,您可能需要删除else
并且有两个if
s:
if (patt1 && patt3) {
hasUD = 'UD';
alert(hasUD);
}
if (patt2 && patt3) {
hasJD = 'JD';
alert(hasJD);
}
另一种选择是使用更具体的模式。目前,您检查字符串中的字符字符。例如,D
中的KD-
足以满足您的条件。取决于您的规范:
if(str.match(/U\w*D$/i))
if(str.match(/U\w*D$/i))
if(str.match(/U\w*D|D\w*U/i))
另一种选择是对所有情况使用单一匹配:
var matches = str.match(/([JU])\w*(D)/i);
if(matches){
var firstLetter = matches[1];
var secondLetter = matches[2];
alert(firstLetter + secondLetter);
}
else {
alert(":(");
}
最后一点:在这种情况下,您不需要/g
标志。全局标志用于查找所有出现的模式,但这里只检查一个。
答案 2 :(得分:0)
<script type="text/javascript">
var str = "KD-R435jwd";
var matches = str.match(/(EE|[EJU])\w*(D)/i);
if(matches){
var firstLetter = matches[1];
var secondLetter = matches[2];
alert(firstLetter + secondLetter);
}
else {
alert(":(");
}
</script>
这个结论......