1

私はすべての引用符(double"とsingle'も同様)を一致させるための正規表現に取り組んでいます。これは、前に特定の文字が必要であり、同じ引用符タイプに到達するか、HTMLコメント(<!-)に遭遇すると終了します。

ゲームのルールは次のとおりです。

  1. HTMLタグ名自体(「<a>」など)は重要ではありません。正規表現は、HTML要素の属性からの入力のみを受け取ります(<a all = "太字のこれは属性セクションです">
  2. '正規表現は、一重引用符( )と二重引用符()の両方を検出できる必要がありますが、それ自体の引用符タイプ( )、HTMLコマンド()、または入力の終わり()"に到達した場合にのみエスケープします。\1<!--$
  3. HTMLコメントが検出された場合、引用は中断されますが、それでも引用と見なされます:<a id = "works <!-inpterrupted->
  4. 次のパターンに従って、最初の引用符の前に特定の文字セットのみが存在する必要があります:[^ \ w!#£¤€´¨-.:]

この正規表現を参照してください:

/[^\w!#£¤€´¨\-.:]('|")(.|\n)*?(\1|<!--|$)/

ただし、(regexpalの)DISALLOW領域に問題があります。最初の文字は許可されていないため、正規表現はここでは機能しません。

よろしくお願いします!

明確化

ここregexpal.comの例。DISALLOWセクションのコンテンツを除くすべてが正しいです。

望ましい結果は次のようになります。太字は、上記の正規表現表示を使用して一致することを示します。(多くの)HTMLコメントは、一貫した方法でHTMLタグを終了するためにあります。

許可する

  • < a '' <!-->
  • <a $'' <!-->
  • < a%'' <!-->
  • < a&'' <!-->
  • <a /'' <!-->
  • < a('' <!-->
  • < a)'' <!-->
  • <a {'' <!-->
  • < a }'' <!-->
  • <a ['' <!-->
  • < a ]'' <!-->
  • <a ='' <!-->
  • < a?'' <!-->
  • <a +'' <!-->
  • <a `'' <!-->
  • <a |'' <!-->
  • <a ^'' <!-->
  • < a〜 '' <!-->
  • <a *'' <!-->
  • < a、'' <!-->
  • < a ;'' <!-->
  • <a <'' <!-->
  • <a \'' <!-->

却下

  • <a a'' <!-->
  • <a 9'' <!-->
  • <a!'' <!-->
  • <a#'' <!-->
  • <a£''<!-->
  • <a¤''<!-->
  • <a€''<!-->
  • <a´'' <!-->
  • <a¨''<!-->
  • <a-'' <!-->
  • <a _'' <!-->
  • <a。''<!-->
  • <a:'' <!-->

両方の見積もりタイプ

  • <a single ='hey' double = "you" <!-->

HTMLの見積もりで停止

  • <a ='<!-これにより、引用符とHTMLタグの両方が壊れます-> _

入力の終わり

<a = '

これは-新しい行で-まだ見積もりの​​一部です

4

1 に答える 1

1

わかった。当然、一致の先頭にある引用文字は除外する必要があります。

/[^\w!#£¤€´¨\-.:'"]('|")(.|\n)*?(\1|<!--|$)/
于 2012-12-07T17:23:43.203 に答える