Eliomで入力値検査 (4) Eliom_parameters.regexp バグ?

以前 ここで書いた 電子メールアドレスを表現するリクエストパラメータの param_type で

let email_string s = Eliom_parameters.regexp emailregex "$0" s

と書くと、 なぜか 文字列 "ocsigen" が帰ってくる。 正規表現の $0 はマッチする文字列全体を指すと思っていたのだけど、これはどういうことだろう。

もちろん、正規表現全体を カッコで囲んで、$1 を指定すればうまくいく。

let emailregex = Pcre.regexp "^((?:(?:(?:(?:[a-zA-Z0-9_!#\\$\\%&'*+/=?\\^`{}~|\\-]+)(?:\\.(?:[a-zA-Z0-9_!#\\$\\%&'*+/=?\\^`{}~|\\-]+))*)|(?:\"(?:\\\\[^\\r\\n]|[^\\\\\"])*\")))\\@(?:(?:(?:(?:[a-zA-Z0-9_!#\\$\\%&'*+/=?\\^`{}~|\\-]+)(?:\\.(?:[a-zA-Z0-9_!#\\$\\%&'*+/=?\\^`{}~|\\-]+))*)|(?:\\[(?:\\\\\\S|[\\x21-\\x5a\\x5e-\\x7e])*\\]))))$"
let email_string s = Eliom_parameters.regexp emailregex "$1" s

例によってバグ報告は後まわし。。。