以下のtest(3行目)という名前の関数の使用に興味があります。
var pattern = /[1-9][1-9]{5}/;
var str = 'this is 248760!';
alert(pattern.test(str));
このスクリプトを本で見ましたが、関数の定義はありませんtest(str)
。
true
エラーを出す代わりにアラートを出すのはなぜですか?
以下のtest(3行目)という名前の関数の使用に興味があります。
var pattern = /[1-9][1-9]{5}/;
var str = 'this is 248760!';
alert(pattern.test(str));
このスクリプトを本で見ましたが、関数の定義はありませんtest(str)
。
true
エラーを出す代わりにアラートを出すのはなぜですか?
pattern
変数は実際には正規表現オブジェクトであり(/
前後の文字のため)、正規表現にはJavaScriptの一部として組み込まれたメンバー関数がtest(...)
あります。
pattern
正規表現オブジェクトです
/[1-9][1-9]{5}/.test("foo"); // valid javascript
正規表現オブジェクトは、などの多くのメンバー関数を提供しtest(...)
ます toString()
。
/[1-9][1-9]{5}/.toString(); // "/[1-9][1-9]{5}/"
最初と最後の/
'は、次の略記のようなものです。
new RegExp("[1-9][1-9]{5}"); // /[1-9][1-9]{5}/