2つの文字列の間の文字に一致するjavascript正規表現
-
05-07-2019 - |
質問
正規表現はまったく新しいので、変数にマップするために値を一致させるためにそれを使用しようとしています(PHPスクリプトから生成されたresponceTextの出力を見るJavaScript)。
現時点では、このコードがあります:
if (xmlhttp.readyState==4)
{
document.getElementById("test").innerHTML=xmlhttp.responseText;
cmake = xmlhttp.responseText.match(/Combined_Make =(.*?)</);
}
出力の(一部)を以下に示します:
echo "<span class=\"note\">";
echo "Test Output\n";
echo " Combined_Make = $model\n";
echo " Combined_Model = $marque\n";
すべてが実行されると、実際には次のような行が表示されます:
Combined_Make = GRAND JEEP CHEROKEE<br />
現時点では、正確にこれを取り戻しています:
'Combined_Make = GRAND JEEP CHEROKEE&gt;、GRAND JEEP CHEROKEE'
もちろん、この例では「GRAND JEEP CHEROKEE」だけです:)-また、なぜその正確な出力が返されるのかわかりません!
複数のvar $を割り当てる必要があることに注意してください。それぞれが異なる開始スティングを使用して一致します!
ご協力いただきありがとうございます!
解決
試してください:
/Combined_Make =([^<]+)/
そして、最初のキャプチャグループ( [1]
)にアクセスします:
cmake = xmlhttp.responseText.match(/Combined_Make =([^<]+)/)[1];
最初のキャプチャグループにアクセスする前に、一致することをテストすることもできます。
var match = xmlhttp.responseText.match(/Combined_Make =([^<]+)/);
cmake = match && match[1];
他のヒント
String.match()
は、一致するものが1つしかない場合でも、常に配列を返します(一致しない場合を除き、 NULL
を返します)
キャプチャされたサブグループを含むパターンの場合、 String.match()
は常にインデックス0でパターン一致全体を返し、その後、インデックス1から N 。
これを実証する明確な方法があります
"hello".match( /he(ll)(o)/ );
// yields ["hello", "ll", "o"]
所属していません StackOverflow