1

文字列間で解析したい

たとえば、str='uu2uuuu4uuu';

私が使用するとき

alert(str.match(/(2\S+?4)+/ig));

「uuuu」のみが必要な場合、外側で「2uuuu4」を取得します

4

2 に答える 2

0

必要なものには、後読みと先読みが必要です。例えば:

(?<=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で正規表現のルックビハインドをエミュレートするためのより良い方法を見つけられませんでした。

于 2013-03-20T01:03:18.030 に答える
0

フラグ「g」を使用すると、グループ化されているため、「()」に関係なくすべての文字列に一致します。このようなものが必要です

var str='uu2uuuu4uuu';
alert(str.match(/2([^24]+)+4/i));

または、地域内の番号を削除するには

alert(str.match(/\d+([^\d]+)+\d+/i));
于 2013-03-20T00:18:36.983 に答える