需要代码来搜索另一个角色

时间:2010-06-09 03:15:55

标签: javascript regex

如果我想从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>

3 个答案:

答案 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-足以满足您的条件。取决于您的规范

  1. D总是在U:if(str.match(/U\w*D$/i))
  2. 之后
  3. D总是持续时间:if(str.match(/U\w*D$/i))
  4. D和U在同一个区块(任何顺序):if(str.match(/U\w*D|D\w*U/i))
  5. 另一种选择是对所有情况使用单一匹配:

    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>

这个结论......