Skip to content

Instantly share code, notes, and snippets.

@dtinth
Created November 9, 2011 09:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dtinth/1350938 to your computer and use it in GitHub Desktop.
Save dtinth/1350938 to your computer and use it in GitHub Desktop.
Regex เมพ
require('https').get({
host: 'raw.github.com',
path: '/twitter/twitter-text-js/master/twitter-text.js'
}, function(res) {
var buf = '';
res.setEncoding('utf-8');
res.on('data', function(d) { buf += d });
res.on('end', function() { gen(buf); });
});
function json_ascii(x) {
return JSON.stringify(x).replace(/[\s\S]/g, function(a) {
var esc = escape(a);
if (esc.match(/^%u/)) return '\\' + esc.substr(1);
if (esc.match(/^%/) && a.charCodeAt(0) >= 0x80) return '\\u00' + esc.substr(1);
return a;
});
}
function gen() {
var window = this;
eval(arguments[0]);
(function(o) {
function tr(x) {
var flags = x.toString().match(/\/([a-z]*)$/)[0].substr(1);
return 'new RegExp(' + json_ascii(x.source) + (flags != '' ? ', ' + JSON.stringify(flags) : '') + ')';
}
var list = [];
for (var i in o) {
list.push(JSON.stringify(i) + ": " + tr(o[i]));
}
var js = '/* generated from twitter-text.js https://github.com/twitter/twitter-text-js */\n';
js += ('TWITTER_REGEX={\n\t' + list.join(',\n\t') + '\n};');
js += '\n\n';
console.log(js);
})({
url: twttr.txt.regexen.extractUrl
});
}
/* generated from twitter-text.js https://github.com/twitter/twitter-text-js */
TWITTER_REGEX={
"url": new RegExp("(((?:[^-\\/\"'!=A-Za-z0-9_@\uFF20#\uFF03\\.\uFFFE\uFEFF\uFFFF\u202A-\u202E]|^))((https?:\\/\\/)?((?:(?:(?:[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~// \u0085\u00A0\u1680\u180E\u2028\u2029\u202F\u205F\u3000\t-\r\u2000-\u200A//\uFFFE\uFEFF\uFFFF\u202A-\u202E/](?:[_-]|[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~// \u0085\u00A0\u1680\u180E\u2028\u2029\u202F\u205F\u3000\t-\r\u2000-\u200A//\uFFFE\uFEFF\uFFFF\u202A-\u202E/])*)?[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~// \u0085\u00A0\u1680\u180E\u2028\u2029\u202F\u205F\u3000\t-\r\u2000-\u200A//\uFFFE\uFEFF\uFFFF\u202A-\u202E/]\\.)*(?:(?:[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~// \u0085\u00A0\u1680\u180E\u2028\u2029\u202F\u205F\u3000\t-\r\u2000-\u200A//\uFFFE\uFEFF\uFFFF\u202A-\u202E/](?:-|[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~// \u0085\u00A0\u1680\u180E\u2028\u2029\u202F\u205F\u3000\t-\r\u2000-\u200A//\uFFFE\uFEFF\uFFFF\u202A-\u202E/])*)?[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~// \u0085\u00A0\u1680\u180E\u2028\u2029\u202F\u205F\u3000\t-\r\u2000-\u200A//\uFFFE\uFEFF\uFFFF\u202A-\u202E/]\\.)(?:(?:(?:aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel)(?=[^a-zA-Z]|$))|(?:(?:ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)(?=[^a-zA-Z]|$))|(?:xn--[0-9a-z]+))))(?::([0-9]+))?(\\/(?:(?:[a-z0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-_~|&\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u015F\\303\\277]*(?:\\([a-z0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-_~|&\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u015F\\303\\277]+\\)[a-z0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-_~|&\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u015F\\303\\277]*)*[\\+\\-a-z0-9=_#\\/\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u015F\\303\\277]|(?:\\([a-z0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-_~|&\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u015F\\303\\277]+\\)))|(?:@[a-z0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-_~|&\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u015F\\303\\277]+/))*)?(\\?[a-z0-9!?\\*'\\(\\);:&=\\+\\$\\/%#\\[\\]\\-_\\.,~|]*[a-z0-9_&=#\\/])?))", "gi")
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment