2

わかりにくい質問でしたらすみません。私はこれを行う方法を見つけようとしていましたが、それを見つけることができませんでした.それが繰り返される質問であれば、私の謝罪!

次のようなテキストがあります。something:"askjnqwe234"

askjnqwe234RegExp を使用できるようにしたい。引用符を省略したいことに気付くでしょう。これを使用して試して/[^"]+(?=(" ")|"$)/gいましたが、配列を返します。RegExt が配列ではなく単一の文字列を返すようにします。

可能かどうかはわかりませんが、配列の位置を指定したくありません。このようなもの:

var x = string.match(/[^"]+(?=(" ")|"$)/g)[0];

ありがとう!

4

3 に答える 3

6

試す:

/"([^"]*)"/g

英語で: 一致するものを探し、別のものを見つけるまで"、一致しないものをすべて記録します。""

于 2013-03-07T17:07:34.023 に答える
2

matchexec常に配列またはを返すためnull、二重引用符で囲まれた値が1つあり、文字列に改行がないと仮定すると、次のように使用できます。

var x;
var str = 'something:"askjnqwe234"';

x = str.replace( /^[^"]*"|".*/g, '' );
// "askjnqwe234"

または、文字列に他の引用符で囲まれた値がある場合

x = str.replace( /.*?something:"([^"]*)".*/, '$1' );

ここで、は、の間の$1サブパターンによってキャプチャされたサブストリングを指します。 [^"]*()

リクエストに応じて詳細な説明。

上記にかかわらず、配列のインデックス付けを許容し、を使用することをお勧めしますmatch

于 2013-03-07T17:22:17.127 に答える
1

一致すると仮定すると、次のように引用符内の情報をキャプチャできます。

var x = string.match(/something:"([^"]*)"/)[1];

インデックス 1 のメモリ キャプチャは、二重引用符内の部分です。

一致するかわからない場合:

var match = string.match(/something:"([^"]*)"/);

if (match) {
    // use match[1] here
}
于 2013-03-07T17:08:38.003 に答える