0

我有一个字符串

:21::22::24::99:

我想找到说是否:22:在所述字符串中。但是有没有一种方法可以像上面那样搜索一个字符串,以便我想将它与 javascript 匹配,如果有,它是否涉及正则表达式魔术或者还有其他东西?无论哪种方式都不确定该怎么做,如果涉及正则表达式则更是如此。

4

2 回答 2

2

您可以构建所需的正则表达式:

function findNumberInString(num, s) {
    var re = new RegExp(':' + num + ':');
    return re.test(s);
}

var s = ':21::22::24::99';
var n = '22';

findNumberInString(n, s);  // true

或者只是使用匹配(虽然测试对我来说更干净)

!!s.match(':' + n + ':');  // true

编辑

以上都使用正则表达式,所以小数点(.)会来代表任何字符,所以“4.1”会匹配“461”甚至“4z1”,所以最好使用基于String.prototype.indexOf以防万一的方法(除非你想要“。”代表任何字符),所以根据 Blender 的评论:

function findNumberInString(num, s) {
    return s.indexOf(':' + num + ':') != -1;
}
于 2012-10-24T05:07:29.850 回答
2

像这样:

aStr = ':21::22::24::99:';
if(aStr.indexOf(':22:') != -1){
    //':22:' exists in aStr
}
else{
    //it doesn't
}
于 2012-10-24T05:09:07.420 回答