変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

IE

【JavaScript】正規表現の\sではまる

空白でテキストを区切る場合

text.split(” “)で十分だけど

タブや改行でも区切りたかったので

text.split(/\s/g)にすると

ECMAScript 準拠なら、\s: 空白文字 ([ \t\f\r\n\v])だからいいかな?と思った。

同様に

text.match(/:[^\+…\’\s]+/g)で、SQLのパラメータっぽい事を処理しようと

「select * from table1 where aaa =’:コード[20]’」は予定通り「:コード[20]」が取れた。

「select * from table1 where aaa =’:コード{20}’」は予定通り「:コード{20}」が取れた。

しかし、

「select * from table1 where aaa =’:コード(20)’」は予定外の「:コード」が取れた。

これでは困るので\sのかわりに\u0020を使って

text.match(/:[^\+…\’\u0020]+/g)とすると

「select * from table1 where aaa =’:コード(20)’」は予定通り「:コード(20)」が取れた。

ところが、サンプルを作ってみると異常は起きない。

特定の環境か使い方でしか起きない様だ。

そうだったら恐ろしいけど、よくよく見ればコードミスかな?




top