Skip to content

Instantly share code, notes, and snippets.

@hrdaya
Last active August 29, 2015 14:16
Show Gist options
  • Save hrdaya/d041d27110f7dcab3a7a to your computer and use it in GitHub Desktop.
Save hrdaya/d041d27110f7dcab3a7a to your computer and use it in GitHub Desktop.
JavaScriptで正規表現(エスケープ編) ref: http://qiita.com/hrdaya/items/4beebbdb57009b405d2d
/**
* HTMLエスケープ
*
* @param {String} str 変換したい文字列
*/
var escapeHTML = function (str) {
return str
.replace(/&/g, '&')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;');
};
/**
* HTMLアンエスケープ
*
* @param {String} str 変換したい文字列
*/
var unEscapeHTML = function (str) {
return str
.replace(/(&lt;)/g, '<')
.replace(/(&gt;)/g, '>')
.replace(/(&quot;)/g, '"')
.replace(/(&#39;)/g, "'")
.replace(/(&amp;)/g, '&');
};
/**
* JavaScriptエスケープ
*
* @param {String} str 変換したい文字列
*/
var escapeJs = function (str) {
return str
.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'")
.replace(/"/g, '\\"')
.replace(/\//g, '\\/')
.replace(/</g, '\\x3c')
.replace(/>/g, '\\x3e')
.replace(/(0x0D)/g, '\r')
.replace(/(0x0A)/g, '\n');
};
/**
* JavaScriptアンエスケープ
*
* @param {String} str 変換したい文字列
*/
var unEscapeJs = function (str) {
return str
.replace(/\\'/g, "'")
.replace(/\\"/g, '"')
.replace(/\\\//g, '/')
.replace(/\\x3c/g, '<')
.replace(/\\x3e/g, '>')
.replace(/\\\\/g, '\\');
};
/**
* JavaScriptとHTMLのエスケープ
*
* @param {String} str 変換したい文字列
*/
var escapeJsHTML = function (str) {
return str
.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'")
.replace(/"/g, '\\"')
.replace(/\//g, '\\/')
.replace(/</g, '\\x3c')
.replace(/>/g, '\\x3e')
.replace(/(0x0D)/g, '\r')
.replace(/(0x0A)/g, '\n')
.replace(/&/g, '&amp;');
};
/**
* 外部リンク不可、括弧類のエスケープ
*
* @param {String} str 変換したい文字列
*/
var noScript = function (str) {
return str
.replace(/(\/\/)/g, '//')
.replace(/\(/g, '(')
.replace(/\)/g, ')')
.replace(/\[/g, '[')
.replace(/\]/g, ']')
.replace(/\{/g, '{')
.replace(/\}/g, '}');
};
/**
* 文字列strをUTF-8ベースでエンコード
*
* 特別な意味を持つ予約文字「/」「:」「&」「+」「=」はエンコードしない
*
* @param {String} str 変換したい文字列
*/
encodeURI(str);
/**
* encodeURI、もしくはそれに類似したルーチンによって作成された
* URIの要素をデコード
*
* @param {String} str 変換したい文字列
*/
decodeURI(str);
/**
* 文字列strをURIを構成する部分文字列としてエンコード
*
* URIで使用する記号をすべてエンコードするため、完全なエンコードになります。
* 特別な意味を持つ予約文字「/」「:」「&」「+」「=」などもエンコードする為
* URI全体に適用するとそれ自体はURIとして機能しなくなる。
*
* @param {String} str 変換したい文字列
*/
encodeURIComponent(str);
/**
* encodeURIComponent、もしくはそれに類似したルーチンによって作成された
* URIの要素をデコード
*
* @param {String} str 変換したい文字列
*/
decodeURIComponent(str);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment