在字符串中查找子字符串

3

我一直在文本框中输入一个字符串,"KD-G435MUN2D"

我已经使用以下代码从该字符串中搜索"UD"子字符串:

<script>
     var str="KD-R435MUN2D";
     var patt1=/UD/gi;
     document.write(str.match(patt1));
</script>

但是这段代码无法正常运行。我的错误在哪里?
var str = $(this).val; 
var hasUD; 
var hasJD; 
var patt1 = str.match(/u/gi); 
var patt2 = str.match(/J/gi);
var patt3 = str.match(/D/gi); 

if (patt1 && patt3) { 
        hasUD = 'UD'; 
}elseif (patt2 && patt3) { 
        hasJD = 'JD'; } 

我尝试过这个方法,看起来是有效的:

<script type="text/javascript">

var str="KD-R435MUN2D";
var patt1=/U.*D/g;
document.write(str.match(patt1));

</script>

那是因为你的字符串中没有UD! - dplass
如何修改该脚本?我可以搜索“U”和“D”字符并显示结果,例如“UD”... - klox
我不知道你的意思。也许你的意思是:if (str.matches(/U.*D/)) { document.write("UD"); } - dplass
我已经使用了 Meredith L. Patterson 的答案,然后修改了我的答案...这使得我的结果显示得更加具体。 - klox
3个回答

1
试试这个,如果有一个 U 和一个 D,它会返回 'UD'。否则将返回 false。
var str = "KD-R435MUN2D";
var hasUD;
var patt1 = str.match(/U/gi);
var patt2 = str.match(/D/gi);

if (patt1 && patt2) {
    hasUD = 'UD';
} else {
    hasUD = false;
}

document.write(hasUD);

如果变量str="KD-S35JwD",我想搜索JD,该如何修改代码? - klox
将 str.match(/U/gi) 更改为 str.match(/J/gi)。 - Mechlar

0

这只会匹配U和D在一起的情况。请尝试:

var str="KD-R435MUN2D";
var patt1=/[U|D]/gi;
alert(str.match(patt1));

这将返回 'U,D,U'


如果我想在搜索“U”和“D”字符后显示结果为“UD”,该怎么做? - klox
你是否必须精确返回“UD”,或者如果它同时具有U和D,那么布尔值为真是否可以? - Mechlar
我认为...最好使用更具体的显示结果并使用/u.*d/g。 - klox

0

我没有在你的测试字符串中看到连续的UD字符,并且你的正则表达式只指定了子字符串UD。如果你正在寻找U[anything]D,你需要使用/U.*D/gi -- .* 表示“零个或多个有效字符的重复”(不包括换行符)。这将找到UD(如果存在),或者在你的情况下是UN2D。


我想搜索“U”和“D”字符。之后,我想将结果显示为“UD”。如何实现这个功能? - klox
你是否关心它们是否是紧接着的?你是否在意D在U之前?你的问题不够明确。 - Meredith L. Patterson
可能更好的做法是使用 /u.*d/gi,因为它更具体。 - klox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接