0

<form>および<input>タグからすべての属性名を選択できるが、他の HTML タグからは選択できない正規表現は何ですか?

例えば:

<!-- all attribute names get selected -->
<input class="something" id="yes" type="text" name="my-field" value="Hello, world!">

<!-- class and id don't get selected because it's a div -->
<div class="something" id="no"></div>


<!-- class gets selected -->
<form class="my-form"></form>

私は属性名の後にいるだけです

4

2 に答える 2

2

そのような正規表現を構築するのは非常に複雑です。正規表現ですべての HTML を一致させることはできないという事実にもかかわらず、一致させたい属性名が「form」または「input」のいずれかの名前の開始タグの後にあるかどうかを確認するには、非常に複雑な後読みが必要になります。そのような正規表現を構築しようとしないでください。気が狂ったり、読み取り不能、保守不能、または理解不能なモンスターになってしまう可能性があります。

代わりに、DOM パーサー (使用する言語用のものがあります) を使用し、DOM セレクターを適用して、要素の属性名を取得します。

于 2012-10-13T21:11:40.597 に答える
0

正規表現でそれを行うのは簡単な作業ではなく、実際には正規表現で行うのは良い考えではありません。でも可能です >>

input = '...';

var tmp = input, found, params = [];
var re = /(<(?:form|input)\b.*?\s)([\w\-]+)=(['"]).*?\3/gi;
do {
  found = 0;
  tmp = tmp.replace(re, function($0,$1,$2,$3) {
    params.push($2);
    found = 1;
    return $1;
  });
} while (found);

このデモを確認してください。

于 2012-10-13T21:40:24.537 に答える