Home > Javascript AJAX CSS > RegExp Archive

RegExp Archive

Javascript : Browser Identification by RegExp (正規表現を使ってブラウザを判定)

ブラウザを正規表現(Regular Expression)を用いて判定するソースコードです。

browserRegExpIdentification
Opera のテスト

/opera/i (/opera/i.test(navigator.userAgent) == true) ==>ブラウザは Opera です。
Internet Explorer のテスト

/msie/i (/msie/i.test(navigator.userAgent) == true) ==>ブラウザは IE です。
Google Chrome のテスト/chrome/i (/chrome/i.test(navigator.userAgent) == true) ==>ブラウザは Google Chrome です。
Safari のテスト/safari/i (/safari/i.test(navigator.userAgent) == true) ==>ブラウザは Safari or Chrome です。

Gecko のテスト(Mozilla FIrefox)/gecko/i (/gecko/i.test(navigator.userAgent) == true) ==>ブラウザは Gecko (FIrefox, Chrome etc.)です。

このボタンを押すとブラウザがアラート表示されます。  

Continue reading

JavaScript RegExp 正規表現(Regular Expression)

ガジェットの貼り付けコード

ガジェットのソースコードは記事の最後に紹介しています。
使い方:
上に、data1, data2, data3, output の4つタブがあります。data1からdata3のテキストエリアに正規表現をテストしたい文字列をコピーペーストします。

真ん中のエリアに、'match', 'replace', 'test', 'exec', 'search', 'indexOf' のオプションがあり右に実行ボタンがあります。

下に2つのテキストエリアがあります。正規表現のパターンを書き込んでください。最後に空白、改行を入れたらバグが発生してましたが改善しました。書き直しが反映されていれば問題ありません。 一番下のテキストエリアは、replace の書き換えの文字、または indexOf の検索開始位置(数値)を入力します。空白の場合は、replace では "" に、indexOf では数値以外の文字または空白は 0 になります。

実行ボタン(Execute)を押せば、結果がoutput タブのテキストエリアに表示されます。

正規表現オブジェクトは下の3つの書き方で生成することが出来ます。例は文字列内の数値をマッチさせる正規表現です。

Syntax codeExample
1.var Reg = new RegExp("pattern","gim");reg=new RegExp("\d","g")
2.var Reg = new RegExp("pattern");reg=new RegExp("\d")
3.var Reg = /pattern/gim;reg=/\d/g

g    grobal match グローバルマッチ 文字列内のすべてのマッチを配列に格納します。(match, replace,)
i    ignore case (大文字・小文字を無視) アルファベットの大文字と小文字を区別しません。
m    multi lines 複数行の文字列のマッチ

表現で使われる文字の基本的な説明は下のMozila Developer Centerのページで詳しく説明されています。

mozilla developer center Japanese)

mozilla developer center (English)



Strip comments pattern : コメント /* */, // で区切られた文字列のマッチパターン

この replace メソッド を使えばコメントが削除されます。

DescriptionRegExp pattern code
strip multi comments/* */.replace(/\/\*(\d|\D)*?\*\//g,"")
strip multi comments/* */.replace(/\/\*(\s|\S)*?\*\//g,"")
strip multi comments/* */.replace(/\/\*(\w|\W)*?\*\//g,"")
strip multi comments/* */.replace(/\/\*[\d\D]*?\*\//g,"")
strip multi comments/* */.replace(/(\/\*)([^\*]*\*+)([^(\/\*)]+[^\*]*\*+)*[\/$]/g,"")
strip double slash comments //.replace(/(\/\/)([^\n]*)/g,"")
strip double slash comments //.replace(/(\/{2})([^\n]*)/g,"")
strip double slash comments //.replace(/(\/{2})([^\n]*)/g,"")
strip double slash comments //.replace(/\/{2}.*$/gm,"")

簡単な説明

すべての文字のパターン:
(\s|\S) = スペースまたはスペース以外の文字
(\d|\D) = 数値または数値以外の文字
[\s\S] [\w\W] [\d\D] なども同じです。

/\/\*(\d|\D)*?\*\//g は、/* から始まってすべての文字が0以上あり */ までの文字にマッチします。 /* ==> \/\*

下のコードは文字列 str のコメント内の文字、/* */ , // のすべてを削除します。

str.replace(/\/\*(\d|\D)*?\*\//gm,"").replace(/(\/\/)([^\n]*)/g,"")

次に、下のコードは http:// や https:// などのコードを保護します。/* */のコメントを削除した後に、:// を/**/ に変換してから最後に元に戻します。

str.replace(/(\/\*)([^\*]*\*+)([^(\/\*)]+[^\*]*\*+)*[\/$]/g,"").replace(/\:\/\//g,"/**/").replace(/(\/\/)([^\n]*)/g,"").replace(/\/\*\*\//g,"://");

上記のように上のコードを組み合わせて replace を使えばコメントを削除することが出来ますが、文字列に" "や ' ' がある場合にバグが発生します。例えば、var str=" /* string */ " の/* string */ にもマッチしてしまいます。

Javascript の Compressor を作る場合は専用の関数を作ることを考えた方がいいかもしれません。 既存の関数だけではかなり効率が悪いものになると思います。

Color Code pattern : カラーコード(#000, #FFFFFF )の文字列のマッチパターン

下の正規表現パターンは、カラーコードにマッチします。

注意: match と replace のパターンは違います。

NOTE: match and replace is not same pattern

DescriptionRegExp pattern code
color #000 #fff #ff0000.replace(/\#([\d\w]{3}|[\d\w]{6})(?!\w|\d)/g,"")
color #000 #fff #ff0000.replace(/\#([\d\w]{3}|[\d\w]{6})(?!\w|\d)/g,"")
color #000 #fff #ff0000.replace(/\#(\d{3}|\w{3}|[\d\w]{6})(?="|;|'|\s)/g,"")
color #000 #fff #ff0000.match(/\#([\d\w]{6}|[\d]{3}|[\w]{3})['";\s]/g)
color #000 #fff #ff0000.match(/\#([\d\w]{6}|[\d\w]{3})['";\s]/g)
color #000 #fff #ff0000.match(/\#([\d\w]{6}|[\d\w]{3})(?!\w|\d)/g)

RegExp pattern : 正規表現の文字列のマッチパターン

これはガジェットで使っている正規表現のパターンです。/ pattern / で終わるか、/ pattern / のあとにg,i,m,y で終わればマッチします。

DescriptionRegExp pattern
/pattern/ or /pattern/gimy /^\/+(\s|\S)*?(\/|\/[gimy]+)$/g



Continue reading

Index of all entries

Home > Javascript AJAX CSS > RegExp Archive

Return to page top