検索用語を入力
検索フォームを送信
my-Tool.com: 正規表現テスタ - 正規表現のルールは期待通りに機能するかどうかをテストする。 - JavaScript
IPアドレス
MaximaPHP
正規表現テスタ
数学
ゲーム
ネットワーク
インターネットコード
日付と時間
文字列とテキスト
ワードドメイン
コードテスタ
ビーワイズビット
ランキン
質問と答え
僕について
フォーラム
AdManner
無料広告サイト
インドネシア語
英語
JavaScript
PHP
VBScript
Java
JavaScript
JavaScript言語で使用された正規表現パターンをテストする。
マッチするパターン
:
リテラル
例) /http:\/\/([^\/]+)\/(.*)(\s|\n)/ig
変数
例) http://([^/]+)/(.*)(\s|\n)
大・小文字区別しない
グローバル
マルチライン
検索するテキスト
:
正規表現テスタ このツールはプログラムに埋め込む前に正規表現パターンをあるテキストに対してテストするのに役に立つ。 上の欄に正規表現のパターンを入力し、そしてこのテキストをあなたのテキストに置き換えて「クエリ送信」を押すだけで、このツールはマッチした最初のところを返してくれる。 内部的には、このツールはJavaScriptの標準正規表現関数「exec」を利用して、以下に見ることができる。 http://www.regular-expressions.info/javascript.html このツールは以下のURLにいつも見ることができる。 http://www.my-tool.com/ja/regexp/ 楽しい正規表現テストを!
:
このツールを利用したほとんどのお客様は以下のツールも利用しました。
IP - Nama host
(20.0%),
Source
(20.0%),
ビーワイズビット
(20.0%)
このツールのソースコードは以下に示す。
<?php /****************************************************************** * * RegexpJS, JavaScript言語で使用された正規表現パターンをテストする。 * Copyright (C) 2006, Bowo Prasetyo * * http://www.my-tool.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation below, * * http://www.gnu.org/licenses/gpl.html#TOC1 * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * * このプログラムはフリーソフトウェアです。あなたはこれを、以下のURLにフリーソフトウェ * ア財団によって発行された GNU 一般公衆利用許諾契約書の定める条件の下で * 再頒布または改変することができます。 * * http://www.gnu.org/licenses/gpl.html#TOC1 * * このプログラムは有用であることを願って頒布されますが、*全くの無保証* * です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含 * め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご覧ください。 * * あなたはこのプログラムと共に、GNU 一般公衆利用許諾契約書の複製物を一部 * 受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団ま * で請求してください(宛先は the Free Software Foundation, Inc., 59 * Temple Place, Suite 330, Boston, MA 02111-1307 USA)。 * *****************************************************************/ /** * 現在のツールを表示する * * @param int $depth インデックスページからどれぐらい深いか * @param string $qstring 親ツールのクエリー文字列 */ $type = 'literal'; if (isset($_POST['type'])) $type = $_POST['type']; unset($pattern); if (isset($_POST['pattern'])) $pattern = trim(stripslashes($_POST['pattern'])); $options = array(); if (isset($_POST['options'])) $options = $_POST['options']; if (count($options)===0) { array_push($options,'nocase'); array_push($options,'global'); } $text = <<<EOT 正規表現テスタ このツールはプログラムに埋め込む前に正規表現パターンをあるテキストに対してテストするのに役に立つ。 上の欄に正規表現のパターンを入力し、そしてこのテキストをあなたのテキストに置き換えて「クエリ送信」を押すだけで、このツールはマッチした最初のところを返してくれる。 内部的には、このツールはJavaScriptの標準正規表現関数「exec」を利用して、以下に見ることができる。 http://www.regular-expressions.info/javascript.html このツールは以下のURLにいつも見ることができる。 http://www.my-tool.com/ja/regexp/ 楽しい正規表現テストを! EOT; if(isset($_POST['text'])) $text = trim(stripslashes($_POST['text'])); ?> <script src="/globals-ja.js"> </script> <script src="/regexptester-ja.js"> </script> <form name="my_tool_form" method="POST" action="#"> <table> <tr><td rowspan="2">マッチするパターン</td><td>:</td><td> <input type="radio" name="type" value="literal" <?php echo $type=='literal'?'checked':'' ?>>リテラル </td><td> <input type="text" name="lpattern" size="60" value="<?php echo $pattern ?>"><br /><span class="eg">例) /http:\/\/([^\/]+)\/(.*)(\s|\n)/ig</span></td></tr> <tr><td></td><td colspan="2"> <table class="top_right_left_bottom"> <tr><td rowspan="2"><input type="radio" name="type" value="variable" <?php echo $type=='variable'?'checked':'' ?>>変数 </td> <td><input type="text" name="vpattern" size="60" value="<?php echo $pattern ?>"><br /><span class="eg">例) http://([^/]+)/(.*)(\s|\n)</span></td></tr> <tr><td> <input type="checkbox" name="nocase" value="nocase" <?php echo in_array('nocase',$options)?'checked':'' ?>> 大・小文字区別しない <input type="checkbox" name="global" value="global" <?php echo in_array('global',$options)?'checked':'' ?>> グローバル <input type="checkbox" name="multiline" value="multiline" <?php echo in_array('multiline',$options)?'checked':'' ?>> マルチライン</td></tr></table> </td></tr> <tr><td>検索するテキスト</td><td>:</td><td colspan="2"><textarea name="text" rows="20" cols="60"><?php echo $text ?></textarea></td></tr> <tr><td> <input type="button" value="マッチする" onClick="var tester = new RegexpTester(getRadio(this.form.type)); this.form.result.value = tester.test(this.form.lpattern, this.form.vpattern, this.form.nocase, this.form.global, this.form.multiline, this.form.text.value); return false;"></td> <td>:</td><td colspan="2"><textarea name="result" rows="20" cols="60" wrap="off" style="border:none"></textarea></td></tr> </table> </form> <br> <?php ?>
'globals-ja.js'のソースコードは以下に示す。
<!-- hide script from old browsers /** * @fileoverview * 共通な作業を行うグローバルなクラスを含んでいる. * * <pre> * globals.js * Copyright (C) 2006-2007, Bowo Prasetyo * * http://www.my-tool.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation below, * * http://www.gnu.org/licenses/gpl.html * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * * このプログラムはフリーソフトウェアです。あなたはこれを、以下のURLにフリーソフトウェ * ア財団によって発行された GNU 一般公衆利用許諾契約書の定める条件の下で * 再頒布または改変することができます。 * * http://www.gnu.org/licenses/gpl.html * * このプログラムは有用であることを願って頒布されますが、*全くの無保証* * です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含 * め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご覧ください。 * * あなたはこのプログラムと共に、GNU 一般公衆利用許諾契約書の複製物を一部 * 受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団ま * で請求してください(宛先は the Free Software Foundation, Inc., 59 * Temple Place, Suite 330, Boston, MA 02111-1307 USA)。 * </pre> */ /** * ラジオボタンの選択した値を取得する * * @param {Array} obj ラジオボタン(<input type="radio">)オブジェクト * @return ラジオボタンの選択した値 * @type String */ function getRadio(obj) { for (var i=0; i < obj.length; i++) { if (obj[i].checked) return obj[i].value; } } /** * 複数行の選択タグ<select>の選択した値を配列として取得する * * @param {Object} ob Selectオブジェクト * @return 選択した値の配列 * @type Array */ function getMultiple(ob) { var arSelected = new Array(); for (var i = 0; i < ob.options.length; i++) if (ob.options[i].selected) arSelected[arSelected.length] = ob.options[i].value; return arSelected; } /** * 正規表現の文字列中のメタ文字をエスケープする * * @param {String} str エスケープする正規表現の文字列 * @return エスケープした普通の文字列 * @type String */ function unregexp(str) { return str.replace(/([\\|()[\]{}^$*+?.])/g, "\\$1"); } /** * 文字列の左側と右側から空白文字を切り捨てる */ String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); } /** * 文字列の複数並んだ空白文字を一つに圧縮する */ String.prototype.compress = function() { return this.replace(/\s+/g, ' '); } // end hiding script from old browsers -->
'regexptester-ja.js'のソースコードは以下に示す。
<!-- hide /** * @fileoverview * JavaScriptで正規表現をテストするクラスを含んでいる. * * <pre> * regexptester.js, JavaScriptで正規表現をテストする. * Copyright (C) 2006, Bowo Prasetyo * * http://www.my-tool.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation below, * * http://www.gnu.org/licenses/gpl.html * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * * このプログラムはフリーソフトウェアです。あなたはこれを、以下のURLにフリーソフトウェ * ア財団によって発行された GNU 一般公衆利用許諾契約書の定める条件の下で * 再頒布または改変することができます。 * * http://www.gnu.org/licenses/gpl.html * * このプログラムは有用であることを願って頒布されますが、*全くの無保証* * です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含 * め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご覧ください。 * * あなたはこのプログラムと共に、GNU 一般公衆利用許諾契約書の複製物を一部 * 受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団ま * で請求してください(宛先は the Free Software Foundation, Inc., 59 * Temple Place, Suite 330, Boston, MA 02111-1307 USA)。 * </pre> */ /** * RegexpTesterオブジェクトを生成する * * @class * 正規表現をテストするクラス. * * テストする正規表現はリテラルとして * (たとえば/[a-z]+/ig)または変数として * ('[a-z]+'およびいくつかのオプション)のフォーマットを取ることができる。 * <br><br> * 使用例: * <code><pre> * document.write('<form name="my_tool_form">lpatt: <input type="text" name="lpatt" value="/[aiueo]([a-z])/ig">, vpatt: <input type="text" name="vpatt"><input type="checkbox" name="nocase"> nocase, <input type="checkbox" name="global"> global, <input type="checkbox" name="multiline"> multiline</form>'); * var tester = new RegexpTester('literal'); * document.write('<pre>'+tester.test(document.my_tool_form.lpatt, document.my_tool_form.vpatt, document.my_tool_form.nocase, document.my_tool_form.global, document.my_tool_form.multiline, 'Input pattern will be tested against this text.')+'</pre>');</pre></code> * * 以上の例はつぎの結果を出力する: * <br><br> * <form name="my_tool_form"> * lpatt: <input name="lpatt" value="/[aiueo]([a-z])/ig" type="text">, * vpatt: <input name="vpatt" value="[aiueo]([a-z])" type="text"> * <input name="nocase" type="checkbox" checked> nocase, * <input name="global" type="checkbox" checked> global, * <input name="multiline" type="checkbox"> multiline</form> * <pre>In n * ut t * at t * er r * il l * es s * ed d * ag g * ai i * is s * ex x * </pre> * * @constructor * @param {String} type 正規表現のフォーマット * @author Bowo Prasetyo <praNzjOp@SgmaPilA.cMom> (take N O S P A M for email) */ function RegexpTester(type) { /** * 正規表現のフォーマット. * * 可能な値は: * <ul><li>'literal': リテラル入力をテストする(たとえば、/[a-z]+/ig) * <li>'variable': 変数の入力をテストする(たとえば、'[a-z]+'およびいくつかのオプション)</ul> * @type String */ this.type = type; } /** * 正規表現をテストする. * * 入力パターンはオプションも同様に<input>オブジェクトである。なぜか * というと、テストする前にそれらを同期化するだからだ。すなわち、フォーマット * はリテラルの場合はvpattがlpattに同期化され、逆も同様。 * * @param {Object} lpatt リテラルパターン(<input type="text">オブジェクトとして) * @param {Object} vpatt 変数パターン(<input type="text">オブジェクトとして) * @param {Object} nocase 大・小文字の区別を無視するかどうか(<input type="checkbox">オブジェクトとして) * @param {Object} global グローバル的にマッチングするかどうか(<input type="checkbox">オブジェクトとして) * @param {Object} multiline マルチラインとしてマッチングするかどうか(<input type="checkbox">オブジェクトとして) * @param {String} text テストするテキスト * @return テスト結果 * @type String */ RegexpTester.prototype.test = function(lpatt, vpatt, nocase, global, multiline, text) { var options; if (this.type=='literal') { lpatt.value = lpatt.value.replace(/(^\s+)|(\s+$)/, ''); var matches; if ((matches = lpatt.value.match(/^\/(.+)\/(.*)$/)) !== false) { vpatt.value = matches[1].replace(/\\\//g,"/"); if (matches[2]!=='') { if (matches[2].match(/i/)) nocase.checked = true; else nocase.checked = false; if (matches[2].match(/g/)) global.checked = true; else global.checked = false; if (matches[2].match(/m/)) multiline.checked = true; else multiline.checked = false; } else { nocase.checked = false; global.checked = false; multiline.checked = false; } } options = (nocase.checked?'i':'') + (global.checked?'g':'') + (multiline.checked?'m':''); } else { vpatt.value = vpatt.value.replace(/(^\s+)|(\s+$)/, ''); options = (nocase.checked?'i':'') + (global.checked?'g':'') + (multiline.checked?'m':''); lpatt.value = '/' + vpatt.value.replace(/\//g,"\\/") + '/' + options; } var pattern = new RegExp(); if (options==='') pattern.compile(vpatt.value); else pattern.compile(vpatt.value,options); var ar; var result = ""; if (pattern.global) { while ((ar = pattern.exec(text)) !== null) { for (i=0; i<ar.length; i++) result += ar[i] + "\t"; result += "\n"; } } else { if ((ar = pattern.exec(text)) !== null) { for (i=0; i<ar.length; i++) result += ar[i] + "\t"; result += "\n"; } } return result; } // unhide -->
©2006 my-Tool.com