• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FLEX3:RegExpValidatorの正規表現)

FLEX3: RegExpValidatorの正規表現

このQ&Aのポイント
  • Flex3のRegExpValidatorでセンセーショナルなタイトルを作成。
  • 正規表現で<>, "'を検出するinvalidに設定するvalidaterを作成したい。
  • いくつか試した正規表現コードを挙げている。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

package { import flash.display.Sprite; import flash.events.Event; import mx.validators.RegExpValidator; import mx.events.ValidationResultEvent; import flash.text.TextField; /** * ... * @author himajin100000 */ public class Main extends Sprite { private var textfield:flash.text.TextField; public function Main():void { textfield = new flash.text.TextField(); textfield.width = 5000; this.addChild(textfield); var expression:String = "あ<い"; var validator:mx.validators.RegExpValidator; validator = new mx.validators.RegExpValidator(); validator.expression = "^[^<>\"']*$"; validator.addEventListener("valid", this.validated); validator.addEventListener("invalid", this.invalidated); validator.validate(expression); //質問文でやりたがっていると思われること。ここから。(個人的に非推奨) //http://www.revulo.com/blog/20080415.htmlを参考にしました。 expression = "あ&lt;" validator.expression = "^(?:(?!(&gt;|&lt;|&amp;|&quot;|&apos;)).)*$"; validator.validate(expression); //ただし… expression = "あ&#x3C;" validator.validate(expression); expression = "あ<" validator.validate(expression); //の二つはvalidにしてある。(面倒くさいだけ) //===================================== //ここまでは伏線。ここから本題。 //===================================== // たぶんHTMLやXMLにかかわるコードだと思うんだけど, // validateとescapeは明確に異なり // http://d.hatena.ne.jp/gallu/20081112/p1 // validateは先に,escapeは後に行うべき。 // > なお、普通に>や<をexpressionに含めると動作しないのでエンティティを使いました。 // というようなものが求められてしまうのは,「設計自体がおかしい」からであって, // その部分を設計したコーダーを罵ってでも,その部分の変更させるべきである。 // その上で,俺はXMLを使う。 // http://livedocs.adobe.com/flex/3/langref/XML.html //============================= //おまけ(個人的に非推奨。escapeされた状態をプログラムから扱わなくて良い手を考えるべき。 //それとは別に<!-- -->とか注釈宣言があったりするかもしれないし…) //=============================== try { var s1:XML = XML("<hoge>" + "&lt;あ&#x3C;" + "</hoge>"); validator.expression = "^[^<>\"']*$"; validator.validate(s1.toString()); }catch (e:Error) { textfield.appendText("bug "); } //============================== //気づいたこと //================================ //何故かcatchされない!?(実体参照にはセミコロンが必要なはず。) try{ var s2:XML = XML("<hoge>" + "&gt" + "</hoge>"); }catch (e:Error) { textfield.appendText("bug "); } } public function validated(e:mx.events.ValidationResultEvent ):void { textfield.appendText("valid "); } public function invalidated(e:mx.events.ValidationResultEvent ):void{ textfield.appendText("invalid "); } } }

9mm
質問者

お礼

わざわざ、ありがとうございます! 理解するのに時間がかかりそうなので、取り急ぎお礼まで。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

ないのかと思って#1を書いたけどこっちを使うよう修正。 http://livedocs.adobe.com/flex/3/langref/flash/xml/XMLDocument.html

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 正規表現について教えてください。

    正規表現について教えてください。 Oracleで開発を行っている者ですが、ネットや本で調べても わからない箇所がありましたので、ここに質問として挙げさせていただきます。 ご教示いただけると幸いです。 現在、下記のようなデータが入ったテーブルがあります。 ---------------------------------------------------------------------------------- ID | SENTENCE          | REG_EXP ---------------------------------------------------------------------------------- 1 | <○○○:XXXX>      | [^<][^:]+ ---------------------------------------------------------------------------------- 2 | <○○○:XXXX>→<△△△:XXXX> | ---------------------------------------------------------------------------------- 3 | ■■■■■<○○○:XXXX> | ---------------------------------------------------------------------------------- このテーブルを使って、アプリを作っているのですが、 期待動作としては、SENTENCEの列に入っている文字列を REG_EXPの列に入っているデータ(正規表現のパターン)で マッチした文字列を切り取るようにしたいのです。 例えば、IDが1の場合は○○○が切り取られるのが期待動作です。 (注.この動作は、REGEXP_SUBSTR関数を用いてSQLで実行します。) お聞きしたいのは、IDが2の場合は△△△を、IDが3の場合は○○○を、 配列の最初の要素に入れるには、正規表現をどのように記載すればよいのか、ということです。 ○、△、■、Xの部分は英数字、日本語のどれが入るのかはわかりませんが、 <や→、:などの全角記号のフォーマットはこのままになります。。 IDが2の正規表現は[^<:→]+[^<:→]+[^<:→]+ で試してみたのですが、 うまく出来ませんでした・・・。 テーブルの線の調整がうまくできず、 表が見づらくて申し訳ありませんが、 正規表現に詳しい方、ご教示をよろしくお願いいたします。

  • 正規表現(urlをリンクさせる)

    $comment = "http://www.yahoo.co.jpとhttp://www.google.co.jp/"; $comment =~ s/(http\:\/\/[a-zA-Z0-9\.\$\,\;\:\&\=\?\!\*\~\@\#\_\(\)\%\+\-\/]*)/<a href=\1>\1<\/a>/mg; 上の文字列では下記の様に置換されるのですが問題ないのですが <a href=http://www.yahoo.co.jp>http://www.yahoo.co.jp</a>と<a href=http://www.google.co.jp/>http://www.google.co.jp/</a> コメントが  $comment ="http://www.yahoo.co.jp&lt;br&gt;http://www.google.co.jp/"; だと <a href=http://www.yahoo.co.jp&lt;br&gt;http://www.google.co.jp/>http://www.yahoo.co.jp&lt;br&gt;http://www.google.co.jp/</a> のように置換されてしまいます。 下記の様に置換する正規表現を教えてください。 <a href=htt://http://www.yahoo.co.jp>http://www.yahoo.co.jp</a>&lt;br&gt;<a href=http://www.google.co.jp/>http://www.google.co.jp/</a>

    • ベストアンサー
    • Perl
  • 特殊記号が勝手にエスケープされてしまう

    Windows2000 ServerにおいてVBScriptとMicrosoft.XMLDOMを用いてASPスクリプトを作成しています。 XMLで特殊文字<,>,",',&を扱う際には&lt;,&gt;,&quot;,&apos;に置換しなくてはならない事はわかったんですが、 実際にReplaceすると例えば&lt;が&amp;lt;になってしまいます。 置換する順番を変えてもこうなるのでおかしいと重い、&amp;への置換を止めてもです。 しかもこれは読み出すと何事も無かったかのように&amp;lt;が&lt;へと戻っています。 試しに置換を全く行わない状態で 「テスト&'>"」という文字列を保存してみると、 保存先ファイルの中では「テスト&amp;'&gt;&quot;」という状態になっていました。 恐らく&,<,>,"が勝手に置換され、読み出される時には元に戻す処理が行われていると思うんですが、これがどの部分で行われているのかがよくわかりません。 JavaScriptで読み出した際にも同様に復元されていたようなので、MSXMLの仕様なのかなと思うんですが、それを裏付ける資料を見つける事もできませんでした。 XMLにおける特殊記号の扱いについて書いているサイトにも記述が見つからなかったので、もしかしたら凄く基本的な事だったりおかしな質問だったりするのかもしれませんが、ご存知の方がいらっしゃいましたら是非ご教授願いたいです。 参考URLだけでも良いですのでどうかよろしくお願いします。

    • ベストアンサー
    • XML
  • ASCII文字列以外を検出する正規表現

    ASCII文字列(半角英数・記号)以外を検出する正規表現を教えてください。 WEBで検索したのですが探し方が悪いのか見つかりませんでした。

  • 正規表現でHTMLタグの属性まで選んで抽出

    現在、掲示板をPHPで作っています。 入力された文字列の無効化と許可タグの分別に正規表現を使いたいと考えております。 そこで、現状では、まずすべての < > を特殊文字に変換し、その後に、許可タグ(属性)のタグを < > にもどそうとしています。 たとえば、fontタグならcolorとsizeを許可しようとして、次のような正規表現を作ってみましたが、うまくいきません。 /&lt;font((( )*(color=)[\"\']?.{1,7}[\"\']?)|(( )*(size=)[\"\']?.{1,2}[\"\']?))*&gt;/i 正規表現はまだ勉強し始めたところで、おかしなところだらけだと思いますが、何かヒントだけでもいただけたらと思います。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • (C#)1バイトの正規表現

    下記のような正規表現による置換をほどこしました。 Buffer=Regex.Replace(Buffer,"^[\x00-\xff]{100}","",RegexOptions.Singleline); 文字列の先頭の100バイトを削除する正規表現ですが、うまく動作しません。 どうも文字コードに問題があるようなのですが、原因のわかる方いらっしゃいますか?

  • rubyの正規表現で"["を使いたいのですが、正しく実行できません

    rubyの正規表現で"["を使いたいのですが、正しく実行できません #! ruby -Ks a ="test[test" b ="test[" if /#{b}/ =~ a print "hit" end エラー内容は test.rb:4: invalid regular expression; '[' can't be the last character ie. can't start range at the end of pattern: /test[/ (RegexpError) "\["と文字を入力することで解決するかと思いましたが上手くいきませんでした。 rubyのバージョンは1.8.2です。宜しくお願いいたします。

    • ベストアンサー
    • Ruby
  • 正規表現:対応する文字列A~文字列Bの検索(入れ子あり)

    いつもお世話になります。 以下のように (??{}) というのを使うと正規表現を再帰することによって入れ子があっても対応するカッコにマッチできることが分かりました。 以下のプログラムでは < から対応する > までを抜いています。 #! perl # betweenBracket -- < から対応 > までを抜く # 全角ブランクで字下げを表現しています。 $re = qr/  <   [^<>]*   (?:    (??{$re})    [^<>]*   )*  > /x; while(<DATA>) {  chomp;  for (/$re/g) {   print "$_ ";  }  print "\n"; } __DATA__ I <love> you I <love> <you> <I <love> <you>> 実行結果: <love> <love> <you> <I <love> <you>> これですが、<、>のような1文字のカッコではなくて文字列による開始~終了でもできるでしょうか。 具体的に言うと &lt; から &gt; までと言う風にしたいです。 #! perl # betweenEntity -- &lt; から対応 &gt; までを抜く ・・・???・・・・ __DATA__ I &lt;love&gt; you I &lt;love&gt; &lt;you&gt; &lt;I &lt;love&gt; &lt;you&gt;&gt; 実行結果: &lt;love&gt; &lt;love&gt; &lt;you&gt; &lt;I &lt;love&gt; &lt;you&gt;&gt; よろしくお願いします!

    • ベストアンサー
    • Perl
  • サニタイジング化されてしまったクォーテーションの復活

    Javaで掲示板を作成しております。 入力された内容をタグがあれば正規表現によりサニタイジング化しています。 <font size="5" color="red">TEST"test"</font> → &lt;font size=&quot;5&quot; color=&quot;red&quot;&gt;TEST&quot;test&quot;&lt;/font&gt; 許可したタグは復活させています。 → <font size=&quot;5&quot; color=&quot;red&quot;>TEST&quot;test&quot;</font> ここで質問なのですが、 「&quot;5&quot;」と「&quot;red&quot;」のダブルクォーテーションを 復活させて「"5"」と「"red"」となるように、 また、「&quot;test&quot;」は復活させないようにするにはどういう方法が御座いますでしょうか? できれば、 <font size="5" color="red">TEST1"test1"</font> <font size="6" color="blue">TEST2"test2"</font> <font size="7" color="yellow">TEST3"test3"</font> がまとめて置換できればと思います。 宜しく御願いいたします。

    • ベストアンサー
    • Java
  • Perl 正規表現に関して

    現在Perlにて正規表現を用い,アクセス者のログが納めてあるlog.datからデータを検索し集計するといったアルゴリズムです. ところが正規表現を用いたのは良いものの,アルファベット以外をパターンとして使用したとき,データを呼び出すどころか表示されない状況に陥ってしまいました. elsif($referer =~ /abcd/i) { $word2 = "abcd"; } 上記のコードは,パターンがアルファベットで構成されているため,正常にシステムが動作します. elsif($referer =~ /あいうえ/i) { $word2 = "あいうえ"; } しかし,上記のコードはパターンが平仮名で構成されているため,冒頭で記している問題が発生してしまいます. そこで (1)パターンにアルファベット以外のものは使えるのか. (2)パターンにアルファベット以外のものを使いたいときはどうすればいいのか. についてお教えください. また正規表現のほかに,文字列を検索し,頻度をカウントすることに長けているコードがございましたらお教え願います. 以上の内容で不明な点等ございましたら随時対応致します. 宜しくお願いします.

    • ベストアンサー
    • Perl