本系列文章旨在記錄一些實用的javascript技巧,既可以作為一個知識的積累,又可以作為閑暇時打發(fā)時間寫寫代碼的記錄。同時也方便日后翻閱~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
function base64_decode(data){ var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,ac = 0,dec = "",tmp_arr = []; if (!data) { return data; } data += ''; do { h1 = b64.indexOf(data.charAt(i++)); h2 = b64.indexOf(data.charAt(i++)); h3 = b64.indexOf(data.charAt(i++)); h4 = b64.indexOf(data.charAt(i++)); bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; o1 = bits >> 16 & 0xff; o2 = bits >> 8 & 0xff; o3 = bits & 0xff; if (h3 == 64) { tmp_arr[ac++] = String.fromCharCode(o1); } else if (h4 == 64) { tmp_arr[ac++] = String.fromCharCode(o1, o2); } else { tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); } } while (i < data.length); dec = tmp_arr.join(''); dec = utf8_decode(dec); return dec; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function utf8_decode(str_data){ var tmp_arr = [],i = 0,ac = 0,c1 = 0,c2 = 0,c3 = 0;str_data += ''; while (i < str_data.length) { c1 = str_data.charCodeAt(i); if (c1 < 128) { tmp_arr[ac++] = String.fromCharCode(c1); i++; } else if (c1 > 191 && c1 < 224) { c2 = str_data.charCodeAt(i + 1); tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = str_data.charCodeAt(i + 1); c3 = str_data.charCodeAt(i + 2); tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return tmp_arr.join(''); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function ToDBC(str){ var result = ''; for(var i=0; i < str.length; i++){ code = str.charCodeAt(i); if(code >= 33 && code <= 126){ result += String.fromCharCode(str.charCodeAt(i) + 65248); }else if (code == 32){ result += String.fromCharCode(str.charCodeAt(i) + 12288 - 32); }else{ result += str.charAt(i); } } return result; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function ToCDB(str){ var result = ''; for(var i=0; i < str.length; i++){ code = str.charCodeAt(i); if(code >= 65281 && code <= 65374){ result += String.fromCharCode(str.charCodeAt(i) - 65248); }else if (code == 12288){ result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32); }else{ result += str.charAt(i); } } return result; } |
1 2 3 |
function clear_script(html){ return html.replace(/<script.*?>[\s\S]*?<\/script>|\s+on[a-zA-Z]{3,16}\s?=\s?"[\s\S]*?"|\s+on[a-zA-Z]{3,16}\s?=\s?'[\s\S]*?'|\s+on[a-zA-Z]{3,16}\s?=[^ >]+/ig,""); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function getStyle(oElm, strCssRule){ var strValue = ""; if(document.defaultView && document.defaultView.getComputedStyle){ strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); } else if(oElm.currentStyle){ strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){ return p1.toUpperCase(); }); strValue = oElm.currentStyle[strCssRule]; } return strValue; } |
1 2 3 4 5 6 7 8 9 |
function formatCss(s){//格式化代碼 s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1"); s = s.replace(/;\s*;/g, ";"); //清除連續(xù)分號 s = s.replace(/\,[\s\.\#\d]*{/g, "{"); s = s.replace(/([^\s])\{([^\s])/g, "$1 {\n\t$2"); s = s.replace(/([^\s])\}([^\n]*)/g, "$1\n}\n$2"); s = s.replace(/([^\s]);([^\s\}])/g, "$1;\n\t$2"); return s; } |
1 2 3 4 5 6 7 8 |
function compressCss (s) {//壓縮代碼 s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //刪除注釋 s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1"); s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容錯處理 s = s.replace(/;\s*;/g, ";"); //清除連續(xù)分號 s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白 return (s == null) ? "" : s[1]; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
//正整數(shù) /^[0-9]*[1-9][0-9]*$/; //負(fù)整數(shù) /^-[0-9]*[1-9][0-9]*$/; //正浮點數(shù) /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/; //負(fù)浮點數(shù) /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //浮點數(shù) /^(-?\d+)(\.\d+)?$/; //email地址 /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/; //url地址 /^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/; 或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$ //年/月/日(年-月-日、年.月.日) /^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/; //匹配中文字符 /[\u4e00-\u9fa5]/; //匹配帳號是否合法(字母開頭,允許5-10字節(jié),允許字母數(shù)字下劃線) /^[a-zA-Z][a-zA-Z0-9_]{4,9}$/; //匹配空白行的正則表達(dá)式 /\n\s*\r/; //匹配中國郵政編碼 /[1-9]\d{5}(?!\d)/; //匹配身份證 /\d{15}|\d{18}/; //匹配國內(nèi)電話號碼 /(\d{3}-|\d{4}-)?(\d{8}|\d{7})?/; //匹配IP地址 /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/; //匹配首尾空白字符的正則表達(dá)式 /^\s*|\s*$/; //匹配HTML標(biāo)記的正則表達(dá)式 < (\S*?)[^>]*>.*?|< .*? />; //sql 語句 ^(select|drop|delete|create|update|insert).*$ //提取信息中的網(wǎng)絡(luò)鏈接 (h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? //提取信息中的郵件地址 \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* //提取信息中的圖片鏈接 (s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? //提取信息中的 IP 地址 (\d+)\.(\d+)\.(\d+)\.(\d+) //取信息中的中國手機(jī)號碼 (86)*0*13\d{9} //提取信息中的中國郵政編碼 [1-9]{1}(\d+){5} //提取信息中的浮點數(shù)(即小數(shù)) (-?\d*)\.?\d+ //提取信息中的任何數(shù)字 (-?\d*)(\.\d+)? //電話區(qū)號 ^0\d{2,3}$ //騰訊 QQ 號 ^[1-9]*[1-9][0-9]*$ //帳號(字母開頭,允許 5-16 字節(jié),允許字母數(shù)字下劃線) ^[a-zA-Z][a-zA-Z0-9_]{4,15}$ //中文、英文、數(shù)字及下劃線 ^[\u4e00-\u9fa5_a-zA-Z0-9]+$ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
function number_format(number, decimals, dec_point, thousands_sep) { /* * 參數(shù)說明: * number:要格式化的數(shù)字 * decimals:保留幾位小數(shù) * dec_point:小數(shù)點符號 * thousands_sep:千分位符號 * */ number = (number + '').replace(/[^0-9+-Ee.]/g, ''); var n = !isFinite(+number) ? 0 : +number, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, dec = (typeof dec_point === 'undefined') ? '.' : dec_point, s = '', toFixedFix = function (n, prec) { var k = Math.pow(10, prec); return '' + Math.ceil(n * k) / k; }; s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); var re = /(-?\d+)(\d{3})/; while (re.test(s[0])) { s[0] = s[0].replace(re, "$1" + sep + "$2"); } if ((s[1] || '').length < prec) { s[1] = s[1] || ''; s[1] += new Array(prec - s[1].length + 1).join('0'); } return s.join(dec); } var num = number_format(1234567.089, 2, ".", ",");//1,234,567.09 |
更多建議: