Regular expression visualizer using railroad diagrams
正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlやPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/
\x{} \pは後続する名前が表すクラス(プロパティ、スクリプト、ブロック)に属する文字にマッチし、 \Pは後続する名前のクラスに属さない文字にマッチします。 クラスの名前が一文字のときはブレースを省略できます。 クラス名の前に^を置くことにより否定形の指定を行うことも可能です。 Perl 5.8 での変更点 Perl5.8以降(5.6でも使えたようですが)では \pや\Pで始まるプロパティ指定に標準Unicode属性を使うこともできます。 詳しくは perlunicode perlunicode - Perl における Unicode サポート を参照してください。 日本語による説明が Unicodestandard にもあります。 Perl 5.8以降ではユーザーが任意のプロパティを作成することができます (IsまたはInを必ず前置)。 詳しくは perlunicode perluni
前回投稿した半角/全角バリデータの正規表現の中身を解説します。 前回は、rubyで使える半角/全角バリデータを紹介しました。 あのソースは突貫工事的に書いたものなので、実は自分でも仕組みを理解しないままでした。 ですが、「それじゃあいかん!」ってことで、1つずつ調べてみました。 以下、ソース再掲↓ KCODE = 'u' def self.hankaku?(str) return nil if str.nil? # 半角のみOKなので、全角が混ざっているとfalseが返る unless str.to_s =~ /^[ -~。-゚]*$/ return false end return true end def self.zenkaku?(str) return nil if str.nil? # 全角のみOKなので、半角が混ざっているとfalseが返る unless str.to_
半角文字か全角文字かを判断する正規表現です。 strが半角を含む場合、マッチします /[ -~。-゜]/ =~ str strが全角を含む場合、マッチします /[^ -~。-゜]/ =~ str どういう仕組みになっているのか? 基本的には両方共同じ正規表現です。 「strが半角を含むか?」と言うことをチェックしています。 まず、半角と名の付くものは半角英数字、半角記号、半角カタカナの3種類があります。 半角英数、半角記号は「ホワイトスペース」から始まり、「チルダ」で終わります。 半角カタカナは「句点」から始まり、「半濁点」で終わります。 なので、「 」から「~」と「。」から「゜」が半角の範囲になります。 Ruby的には「 [ 」と「 ] 」で挟むと文字クラスを表すので、[ -~。-゜]と書くと半角文字のどれか、となります。 逆に全角を表す場合は、文字クラス内で否定を表す「^」を頭につけれ
複数のプロセスでロック状態が異常であると判断し,そのうちの 1つがロックを解除したことにより,別のプロセスがロックしたにもか かわらず,先ほどロック状態が異常であると判断したプロセスによってこの正常なロッ クを解除されてしまう可能性があります. この方法の問題点は,異常なロック状態を解除する操作が正常なロック状態をも 解除できてしまうことにあります.逆に言えば,異常なロック状態を解除する操作に よって正常なロック状態を解除できなければ問題ないわけです.そのためにはどうす ればよいのか? 答えはロック状態が常に変化していけば よいということです.そして,これを実現するのに都合がよいのが rename による方法になります. 最初のスクリプトで説明しますと,ロックファイルが lockfile という 名前のときがロックが解除されている状態で,lockfile987654321 のよう に後ろに
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く