文字「a」と「b」が文字列内のどこかで正確に3桁離れている場合、trueを返します。
正しい方向に向けてくれませんか、ありがとう。
「文字列には、「a
」と「b
」の間に3つの文字が含まれる2つの文字が含まれている場合、次のようになります。
/a[\S\s]{3}b/.test(str)
[\S\s]
本当にすべてに一致する場合は、代わりに使用することもできます.
。違いについては、この質問を参照してください。
両方向の外観を一致させたい場合は、/(a.{3}b|b.{3}a)/
代わりにを使用します。
JavaScriptのネイティブmatch()
メソッドを使用します。これは、パターンが見つかったかどうかを通知するだけでなく、一致したサブ文字列も返します。
var str = "afoeahooawieb00183b123Axo",
fnd = false;
if ( fnd = str.match(/a.{3}b|b.{3}a/gi) ) {
console.log( fnd );
}
どの出力:
["awieb", "b123A"]
私は次の線に沿って何かを提案したいと思います:
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';
}
}
前述のように、以下のコメントでは、最初に一致した文字の例が複数ある場合、このソリューションは失敗します。Jonathan Sampsonが提供するデモを参照してください:http://jsfiddle.net/92Hxp/1/(3番目の文字列、、acdae0rbe
は引き続き一致するはずです)。
これはそれを行う必要があります:
var string = 'a123b'; // String you're testing.
/a.{3}b/.test(string);
必要になる可能性のあるRegEx修飾子を追加します(つまりi
)。