- 2008年12 月24日(水)
- JavaScripts/Ajax
トラックバックURL:
今日のトリビア
JavaScriptの正規表現は・・・
「(?<=」後読み(戻り読み)や「(?<!」否定後読み(否定戻り読み)が使用できない。
1時間悩んだ自分への戒めを込めて。shimazakiでした。
これだけだとさすがに中身がないので、もう少し。
そもそも後読みを使いたかった(正確には本当に使いたかったのは否定後読みですが)理由として、pathinfo形式の現在のURLをスラッシュ区切りで変数に格納したい、という目的のためです。
例えば、
http://example.com/index.php/moduleName/ControllerName/ActionName
であった場合に
JAVASCRIPT:
var pattern = new RegExp( '(?<!/)/(?!/)' );
var urls = location.href.split( pattern );
//urls[0] : http://example.com
//urls[1] : index.php
//urls[2] : moduleName
//urls[3] : ControllerName
//urls[4] : ActionName
var urls = location.href.split( pattern );
//urls[0] : http://example.com
//urls[1] : index.php
//urls[2] : moduleName
//urls[3] : ControllerName
//urls[4] : ActionName
というような具合に。
ですが、先述の通り、否定後読みは使用できないので、
JAVASCRIPT:
var urls = location.href.split( '/' );
//urls[0] : http:
//urls[1] :
//urls[2] : example.com
//urls[3] : index.php
//urls[4] : moduleName
//urls[5] : ControllerName
//urls[6] : ActionName
//urls[0] : http:
//urls[1] :
//urls[2] : example.com
//urls[3] : index.php
//urls[4] : moduleName
//urls[5] : ControllerName
//urls[6] : ActionName
とすることで対応することにしました。
補足になりますが、
実際にはgetパラメータも切り分けるために、
JAVASCRIPT:
var urls = location.href.split( '[/?]' );
としました。
今日のエントリがまだ見ぬ未来のJavaScripter入門者の助けになれば幸いです。
- Newer: JavaScriptを理解するための5つの条件+α
- Older: PHPの配列結合の違いについてのまとめ