Other
正規表現によるパターン・マッチ
金額
-?\d{1,3}(,\d{3})*(\.\d+)?
- 0個または1個のマイナス記号
- 1~3個の数字
- 0個以上の以下のパターン
- 0個または1個の以下のパターン
メールアドレス
mailto:プロトコルを紐解くと、何かおかしなことになってしまいます。基本的にメールアドレスは“<ユーザー名>@<ドメイン名>”ではないのでしょうか。
ドメイン名要素は英数字で始まる英数字とアンダースコアとハイフンの組み合わせだろうと思います(多分)。
[\da-z][\w\-]*
トップ・レベル・ドメインは英字で構成されているような気がします。これらがピリオドで連結されるとすれば、ドメイン名は次のとおりです。
([\da-z][\w\-]*\.)+[a-z]+
一方、ユーザー名は各管理ごとに命名規則が異なり、末尾の記号を許していなかったりもしますが、一般的には英数字で始まる英数字とアンダースコアとハイフンとピリオドの組み合わせではないでしょうか。
[\da-z][\w\-\.]*
これをアットマークで連結するとメールアドレスを抜き出せそうです。
[\da-z][\w\-\.]*@([\da-z][\w\-]*\.)+[a-z]+
以下は文中のメールアドレスをリンクに変換するコードのサンプルです。
mail-source
実行するコマンド
--------
function mailToLink() {
var src = document.getElementById("mail-source");
var html = src.value.replace(
/[\da-z][\w\-\.]*@([\da-z][\w\-]*\.)+[a-z]+/gi,
"<a href=\"mailto:$&\">$&</a>");
var dst1 = document.getElementById("mail-destination-text");
dst1.value = html;
var dst2 = document.getElementById("mail-destination-html");
dst2.innerHTML = html;
}
mail-destination-text
mail-destination-html
C#の場合、内部的にUnicodeで動作しているためか、"\d"は全角(マルチバイトコードの場合は「2バイトコードの・・・」と言えるのですが、Unicodeの場合は何と言うのでしょう。)のアラビア数字にもヒットしてしまうので、"[0-9]"と書く必要があります。"\w"も同様に"[0-9a-z_]"とします。
[0-9a-z][0-9a-z_\-\.]*@([0-9a-z][0-9a-z_\-]*\.)+[a-z]+
encoded-word
=\?(\S+?)\?([BQbq])\?((\S*?\?=)+)
$1 | ... | charset |
$2 | ... | encoding |
$3 | ... | encoded-text + "?=" |
注意:「$3」にはencoded-wordの終端である「?=」も含まれるので、encoded-textを取り出すには末尾の「?=」を取り除く必要があります。