文字列間で解析したい
たとえば、str='uu2uuuu4uuu';
私が使用するとき
alert(str.match(/(2\S+?4)+/ig));
「uuuu」のみが必要な場合、外側で「2uuuu4」を取得します
文字列間で解析したい
たとえば、str='uu2uuuu4uuu';
私が使用するとき
alert(str.match(/(2\S+?4)+/ig));
「uuuu」のみが必要な場合、外側で「2uuuu4」を取得します
必要なものには、後読みと先読みが必要です。例えば:
(?<=START)(.*?)(?=END)
または、空白以外の場合:
(?<=START)(\S*?)(?=END)
または、少なくとも1つの文字がある場合にのみ一致させたい場合:
(?<=START)(.+?)(?=END)
(?<=START)(\S+?)(?=END)
急いでコードを追加した場合は、申し訳ありませんが...
ただし、Javascriptは正規表現のルックビハインドをサポートしていません(つまり、(?<=START)
javascriptでは無効です)。エルゴ、g
フラグを削除して、次のような正規表現で2番目の結果(インデックス= 1)を取得する必要があります。
START(.*?)(?=END)
これは次のようになります。
var str = 'uu2uuuu4uuu';
var match = str.match(/2(.*?)(?=4)/i);
alert(match[1]);
またはこれ:
var str = 'uu2uuuu4uuu';
var match = str.match(/2(\S+?)(?=4)/i);
alert(match[1]);
あなたはその考えを理解します。javascriptで正規表現のルックビハインドをエミュレートするためのより良い方法を見つけられませんでした。
フラグ「g」を使用すると、グループ化されているため、「()」に関係なくすべての文字列に一致します。このようなものが必要です
var str='uu2uuuu4uuu';
alert(str.match(/2([^24]+)+4/i));
または、地域内の番号を削除するには
alert(str.match(/\d+([^\d]+)+\d+/i));