2016-12-01 8 views
0

長いxml生メッセージが文字列形式で保存されています。サンプルは以下の通りです。正規表現でJS文字列を一致させる

<tag1>val</tag><tag2>val</tag2><tagSomeNameXYZ/> 

私はこの文字列を検索し、そのような<tagSomeNameXYZ/>として空のHTMLタグが含まれているかどうかを調べるために探しています。この事は、の値はコンテキストによって変わる可能性があります。私はStr.match(/tagSomeNameXYZ/g)Str.match(/<tag.*.XYZ\/>/g)を使用して、その文字列が正確に含まれているかどうか調べましたが、何かを返すことができました。私は*は(私が興味を持っていないよ)SomeName

Tlのことになるだろう<tag*XYZ/>のようなものと一致したREGの元を、書面でトラブルを抱えている; DR:どのように私は、文字列から<tagSomeNameXYZ/>をフィルタリングします。フォーマットビーイング:<constant variableName constant/>

それが一致する必要があり

例パターン:

<tagGetIndexXYZ/> 
<tagGetAllIndexXYZ/> 
<tagGetFooterXYZ/> 
+1

は、正規表現でXMLを解析しないでくださいい。それを解析してDOMを歩くか、 'document.evaluate'でXPathを使って探しているものを見つけてください。 –

答えて

0

あなたはStr.match(/<tag.*.XYZ\/>/g)を持っている問題がある*それは見て、あなたが望むようにXYZで停止していないすべてのものを取ります。したがって、停止する方法を見つける必要があります([^/]*は、/が見つかるまで持ち続けてから、そこから戻ってきます(slice)。

このヘルプ

testString = "<tagGetIndexXYZ/>" 
 
res = testString.match(/<tag([^/]*)\/\>/)[1].slice(0,-3) 
 
console.log(res)

+0

ありがとうございます。私はこれを試してみましょう。あなたはそれが何をしているのか簡単に説明できますか?特にスライス部分。 – blueren

+0

最後にXYZが削除されます。最後の定数が違う場合は、-3を何かに変更する必要があります –

+0

ダウン投票した人は、より良い解決策を提供して全員が学ぶことができますか? –

関連する問題