Perl6 の正規表現は不思議なんじゃなくて、自由だった

ここ を見て Perl6 のコードに移植するっていうのをやっていた。
Perl6 の正規表現が不思議すぎるなーと思って書いていたんだけど、よく読んだら自由だったらしい。

function isNumber (x) {
    if ( typeof x === 'number' )      return true;
    if ( /^0x[0-9a-f]+$/i.test( x ) ) return true;
    return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test( x );
}

は Perl6 で書くと多分こうなる:

sub is-number($x) {
    return True if $x.WHAT ~~ Numeric;
    return True if $x      ~~ /^0x<[0..9a..fA..F]>+$/;

    $x ~~ /^<[-+]>?(<:digit>+)?(\.<:digit>*)?(e<[-+]>?<:digit>+)?$/;
}

ʕ•͡ω•ʔ 眠い