1

HTML のさまざまなバージョンと仕様によって指定された文字エンティティをさまざまなレベルの理解に列挙する、チューブのいたるところに何百万ものチートシートがあります。私はそれらの特定のものを信頼したくないので、ここに投げ捨てて、誰かがより信頼できる回答を投稿するかどうかを確認します.

そこで、正規表現を使用して、すべての文字参照とエンティティを一致させたいと仮定しましょう。私はから始め/&(?:#(?:x[0-9a-f]+|[0-9]+)|[a-z]{???,???});/iます。しかし、???s には何が入りますか? ltと のように2 文字の長さのエンティティが考えられますgtが、HTML の仕様に 1 文字のエンティティはありますか? 同様に、最も長いエンティティは何ですか? 最後に、直接入力する以外に、HTML でリテラル文字を表現するための構文はこれら3だけですよね?

4

3 に答える 3

5

HTML5で最も長いのはです&CounterClockwiseContourIntegral;。1文字の名前はありません。

ただし、名前付きエンティティの参照は、思ったとおりに機能しないことに注意してください。一部の名前付き文字参照はセミコロンで終わらないため、正規表現はマスタードをカットしません。

于 2012-09-24T13:44:16.533 に答える
3

HTML5仕様では、90年代半ば以降、ブラウザがエラー訂正として行っていたことを明示的に説明しています。既知の文字参照と一致しない場合は、逐語的に表示してください。したがって、正規表現をブラウザのように機能させたい場合は、ブラウザの動作をコピーする必要があります。

つまり、Jukkaが言及したような、既知の参照の完全なリストに対してテストする必要があります。かっこを巧みに使用して用語を省略できます。

[aeiou]uml

ただし、同じ結果を得るには、ブラウザと同じ知識を正規表現に組み込む必要があります。

編集:ちなみに、名前付きエンティティには番号が含まれている場合があります(例:&ensp13;

于 2012-09-24T13:43:49.040 に答える
2

SGML の伝統に従って、エンティティ名は 2 ~ 7 文字でした。これは、HTML 4.01 仕様 (および XHTML 仕様) にも当てはまります。しかし、HTML5 ドラフトでは、名前付き文字参照と呼ばれる多数のエンティティが追加されており、そのうちのいくつかはEmptyVerySmallSquare. したがって、上限を固定したり、下限を 1 より大きくしたりすることは避けたほうがよいでしょう。

于 2012-09-24T13:38:12.193 に答える