Home > Javascript AJAX CSS > RegExp Archive
RegExp Archive
Javascript : Browser Identification by RegExp (正規表現を使ってブラウザを判定)
- 2008年9月 6日 15:41
- Javascript AJAX CSS | RegExp
ブラウザを正規表現(Regular Expression)を用いて判定するソースコードです。
| browser | RegExp | Identification |
|---|---|---|
| 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.)です。 |
このボタンを押すとブラウザがアラート表示されます。
- Comments: 0
- TrackBack (Close): 0
JavaScript RegExp 正規表現(Regular Expression)
- 2008年9月 2日 18:07
- Javascript AJAX CSS | RegExp
|
ガジェットの貼り付けコード ガジェットのソースコードは記事の最後に紹介しています。 |
使い方: 上に、data1, data2, data3, output の4つタブがあります。data1からdata3のテキストエリアに正規表現をテストしたい文字列をコピーペーストします。 真ん中のエリアに、'match', 'replace', 'test', 'exec', 'search', 'indexOf' のオプションがあり右に実行ボタンがあります。 下に2つのテキストエリアがあります。正規表現のパターンを書き込んでください。最後に空白、改行を入れたらバグが発生してましたが改善しました。書き直しが反映されていれば問題ありません。 一番下のテキストエリアは、replace の書き換えの文字、または indexOf の検索開始位置(数値)を入力します。空白の場合は、replace では "" に、indexOf では数値以外の文字または空白は 0 になります。 実行ボタン(Execute)を押せば、結果がoutput タブのテキストエリアに表示されます。 |
正規表現オブジェクトは下の3つの書き方で生成することが出来ます。例は文字列内の数値をマッチさせる正規表現です。
| Syntax code | Example | |
| 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 複数行の文字列のマッチ
| Description | RegExp 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
| Description | RegExp 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 で終わればマッチします。
| Description | RegExp pattern |
|---|---|
| /pattern/ or /pattern/gimy | /^\/+(\s|\S)*?(\/|\/[gimy]+)$/g |
- Comments: 0
- TrackBack (Close): 0
Home > Javascript AJAX CSS > RegExp Archive
Search