tixture55’s diary

主にプログラミング関係の日記です。

backbone.jsでお問い合わせフォームをつくる

今回はbackbone.jsです。サーバ側ばっかり書いてたので普段あまり意識しませんでしたが、Firefox3.0からstickyが使えるようになってたみたいです。今回は正規表現javascriptで扱います。

 

stickyとは

yと指定してやることで、開始位置を表す^への解釈が変わります。

何が変わるかというと、lastIndexプロパティで指定した開始位置でマッチしなければnullを返すということです。

 

99 this.sticky_expression = function (param) {
100
101 let re = /([A-Za-z_][0-9A-Za-z_]*)/gy; // yをつけることでstickyフラグがONになる
102
103 re.lastIndex = 5;
104 let match = re.exec("1234 ABCDEFG");
105 //let match = re.exec("$%%% 1234 ABCDEFG");
106 console.log(match);
107 // => match: [0: 'ABCDEFG', 1: 'ABCDEFG', index: 5]
108
109 re.lastIndex = 5;
110 let match2 = re.exec("1234 5678 ABCDEFG");
111 // => null
112 console.log(match2);
113
114 };
 

 これがyをつけずに実行してやると、下記のように挙動が変わります。

99 this.non_sticky_expression = function (param) {
100
101 let re = /([A-Za-z_][0-9A-Za-z_]*)/g; // stickyフラグがOFFになる
102
103 re.lastIndex = 5;
104 let match = re.exec("1234 ABCDEFG");
105 console.log(match);
106 // => match: [0: 'ABCDEFG', 1: 'ABCDEFG', index: 5]
107
108 re.lastIndex = 5;
109 let match2 = re.exec("1234 5678 ABCDEFG");
110 // => match: [0: 'ABCDEFG', 1: 'ABCDEFG', index: 10]
111 console.log(match2);
112
113 };
 

 開始位置が厳密?でないので、10番目でマッチし、match2でも値が表示されます。

ちなみにお問い合わせフォームはgithubに公開してますので、ES6コードでなくてもよければ参考にどうぞ。時間あったらES6で書き直します。

GitHub - tixture55/contactForm: this contact form is made with backbone.js. notation is ES5.