正規表現はある程度これを達成できるかもしれませんが、あなたが知っておくべき多くの詳細があります。
たとえば、で始まり、最も近い後"lo"
で終わるすべての部分文字列を検索する場合です。(複数の一致がある場合、後続の一致は最後の一致の後に最初の一致を取得します)。 "wo"
"lo"
"lo"
"wo"
"Hello beautiful world!".match(/lo.*?wo/g);
RegExpコンストラクターを使用すると、より柔軟にすることができます(検索したい実際の文字列に置き換えることができます)"lo"
。"wo"
"Hello beautiful world!".match(new RegExp("lo" + ".*?" + "wo", "g"));
重要: 上記のRegExpアプローチの欠点は、それらをエスケープするためにどの文字が特別であるかを知る必要があることです。そうしないと、検索したい実際のサブストリングと一致しません。
indexOf
少し汚れていますが、で達成することもできます。最初の部分文字列の場合:
var startIndex = str.indexOf(startString);
var endIndex = str.indexOf(endString, startIndex);
if (startIndex >= 0 && endIndex >= 0)
str.substring(startIndex, endIndex + endString.length)
文字列の最初"lo"
から最後までの部分文字列を検索する場合"wo"
は、を使用indexOf
しlastIndexOf
て検索できます(上記のコードに少し変更を加えます)。RegExpは、上記の2つの例でに変更.*?
することによってもそれを行うことができ.*
ます(一致するのは最大で1つであるため、最後の「g」フラグは冗長です)。