Archive for the ‘雑談’ Category

【正規表現】精度の割と高いメールアドレスチェック

正規表現3分間クッキング。

 

本日のメニューは、春らしい正規表現を使ったメアド判定です。

 

まずは材料から。

 

~ ローカル部 ~
 

これは@の左側の部分ですね。
以下のようになっております。

  • 英数字
  • ! # $ % & ' * + - / = ? ^ _ { | } ~
  • .(先頭と末尾以外で使用可能。2個以上連続してはならない)

(携帯電話やdionメールなどは連続ドット、@前ドットがあり得る)
 

~ ドメイン部 ~
 

つづいて@の右側部分になります。

  • 英数字、-(先頭以外で使用可能)から成るサブドメインを”.”でつないだもの

 

前述したように、
中にはRFCのルールを無視したアドレスも存在しますがとりあえずPC用

1.まず先頭から末尾まですべてマッチさせるため^と$を入れます。

/^@$/

 2.次に使用可能文字や連続などを踏まえて……

 

出来たものがこちらになります。

/^[\w!#$%&'*+/=?^_{}\\|~-]+(\.[\w!#$%&'*+/=?^_{}\\|~-]+)*@([\w][\w-]*\.)+[\w][\w-]*$/

 

 

少しでも規則に外れようもんなら拒否するとても辛い味に仕上がりました。

こんなの作るのに3分以上掛ったのは番組の仕様です。

 
 

  

おまけ:

携帯などの連続ドットや@前ドットを許可するならこれ。

/^[\w!#$%&'*+/=?^_{}\\|~-]+([\w!#$%&'*+/=?^_{}\\|~\.-]+)*@([\w][\w-]*\.)+[\w][\w-]*$/

webブラウザたちの集い

IE6 さん の発言:
 なんか最近俺だけハブられてる気がするんだけど…
Firefox3.5 さんの 発言:
 キノセイ
Safari4.0 さんの 発言:
 オンリーワンと思えばおk
IE6 さんの 発言:
 お前は元々一匹狼だろ、一緒にすんなよ。
 なぁクロム、お前はどう思うよ。
Chrome3.0 さんの 発言:
 すいません、最近父さんに6さんとはあんま仲良くすんなって言われてるんスよ
 SEも6さんと関わるとなんか面倒らしいッスよ(´δ`)
IE6 さんの 発言:
 新入りのくせに偉そうだな。
 そういうことはシェアで俺に勝ってから言えよ。
Opera10.0 さんの 発言:
 まぁまぁ、6さんもそんなに興奮しないで
 これからはモバイルと家電の時代ですよ
 時代の変化に合わせて体系は変えていくものです
IE6 さんの 発言:
 たしかにお前の変わり身具合には脱帽するよ…
IE8 さんの 発言:
 なんか面白そうな話してますね( ´∀`)
IE6 さんの 発言:
 おう、弟よ。お前からもなんか言ってやってくれ。
 俺はまだまだ現役だってな。
IE8 さんの 発言:
 ―― IE6終了のお知らせ ――
Safari4.0 さんの 発言:
 8は早くアップデートして欲しいんだとよww
Firefox3.5 さんの 発言:
 今時タブもないなんてねぇ( ´,_ゝ`)プッ
Chrome3.0 さんの 発言:
 新しいウィンドウって発想自体時代遅れッスよね
IE6  さんの 発言:
 いいもん、まだシェア一位だもんっヽ(`Д´)ノ
 せいぜい苦労するこったな開発者よ フヘヘ

 


という夢をみたんだ。 

 

googleは今年に入ってIE6のサポートを段階的に終了していくと発表したそうです。

アメリカではとあるデザイン会社がブログ上でIE6葬儀の動画をあげたそうです。 

 

まぁデザイン崩れもそうだが、
DOM(DocumentObjectModel)の違いも大きいですよね。

ものによっては対応させられなくないが余分に時間が掛かりそうです。

 

みなさんはIE6対応は視野に入れていますか?

【Excel】選択したセルを結合するマクロ

後輩「縦に2行ある状態のを上下繋げる方法ってあるの」
オレ「ん。セルの結合じゃねぇの。こんなアイコン(|←a→|)」
後「それって両方に文字入ってたらどうなるの」
オ「下の情報は失われるな」
後「それじゃだめだな。
  InDesignに文字を流し込むんだけど、改行で繋がって一個のセルに入ってれば楽なんだ」
オ「んじゃマクロだな」

という訳でちょっとマクロでも組んでみる。

久し振りに使うVB系の構文に多少イライラしましたが
これで作業が早くになればいいですね。

 Sub uniteCell()
    Dim sheet As Object
    Dim r As range
    Dim start As range
    Dim str As String
    Dim flg As Boolean
    
    ‘マクロ入りファイルを開いとくだけでどのワークブックからでも使えるように
    Set sheet = ActiveWorkbook.ActiveSheet

    ‘選択中のセルを流し込んでいく
    For Each r In sheet.range(Selection.Address)
        If flg = False Then
            Set start = r
            str = r.Value
            flg = True
        Else
            str = str & vbCrLf & r.Value    ‘vbCrLf→改行
            r.Value = “”
        End If
    Next
   
    start.Value = str
End Sub

 

そして思った。
VBAってまだ複合代入(&=)できないのな。
オレが未だに2003使ってるからかな。