1

文字「a」と「b」が文字列内のどこかで正確に3桁離れている場合、trueを返します。

正しい方向に向けてくれませんか、ありがとう。

4

4 に答える 4

1

文字列には、「a」と「b」の間に3つの文字が含まれる2つの文字が含まれている場合、次のようになります。

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

[\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/(3番目の文字列、、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 に答える