1

如果字符 'a' 和 'b' 在字符串中的任何位置被恰好 3 个位置分隔,则返回 true。

你能指出我正确的方向吗,谢谢。

4

4 回答 4

1

对于“一个字符串包含两个字符,' a'和' b',它们之间有3个字符”,这样可以做到:

/a[\S\s]{3}b/.test(str)

where[\S\s]真正匹配所有内容,您也可以使用.。看到这个问题的区别。

如果您想在两个方向上匹配外观,您将使用/(a.{3}b|b.{3}a)/

于 2012-05-16T20:53:59.397 回答
0

我会使用 JavaScript 的本地match()方法,它不仅会告诉您是否找到了模式,还会返回匹配的子字符串。

var str = "afoeahooawieb00183b123Axo",
    fnd = false;

if ( fnd = str.match(/a.{3}b|b.{3}a/gi) ) {
  console.log( fnd );
}

哪个输出:

["awieb", "b123A"]
于 2012-05-16T21:05:42.900 回答
0

我建议以下内容:

return (Math.abs(str.indexOf('a') - str.indexOf('b')) == 3)

这是一个实现演示:

function distanceBetween(el, a, b, d) {
    if (!el || !a || !b || !d) {
        return false;
    }
    else {
        var str = el.firstChild.nodeValue;
        return (Math.abs(str.indexOf(a) - str.indexOf(b)) == d)
    }
}

var lis = document.getElementsByTagName('li'),
    a = 'a',
    b = 'b',
    d = 3;

for (var i = 0, len = lis.length; i < len; i++) {
    if (distanceBetween(lis[i], a, b, d)) {
        lis[i].style.backgroundColor = '#f90';
    }
}​

JS 小提琴演示

如前所述,在下面的评论中,如果第一个匹配的字母有多个示例,则此解决方案将失败。请参阅 Jonathan Sampson 提供的演示:http: //jsfiddle.net/92Hxp/1/(第三个字符串acdae0rbe, 应该仍然匹配)。

于 2012-05-16T20:52:52.560 回答
0

这应该这样做:

var string = 'a123b';  // String you're testing.
/a.{3}b/.test(string);

添加您可能需要的任何 RegEx 修饰符(即i)。

于 2012-05-16T20:53:11.173 回答