原生态的javascript的n种技巧(我从别人的博客中拷贝过来的,方便以后查阅)

1、原生JavaScript实现字符串长度截取

function cutstr(str, len) {   
    var temp;   
    var icount = 0;   
    var patrn = /[^\x00-\xff]/;   
    var strre = "";   
    for (var i = 0; i < str.length; i++) {   
        if (icount < len - 1) {   
            temp = str.substr(i, 1);   
            if (patrn.exec(temp) == null) {   
                icount = icount + 1   
            } else {   
                icount = icount + 2   
            }   
            strre += temp   
        } else {   
            break   
        }   
    }   
    return strre + "..."   
}   

2、原生JavaScript获取域名主机

 1 function getHost(url) {  
 2     var host = "null";  
 3     if(typeof url == "undefined"|| null == url) {  
 4         url = window.location.href;  
 5     }  
 6     var regex = /^\w+\:\/\/([^\/]*).*/;  
 7     var match = url.match(regex);  
 8     if(typeof match != "undefined" && null != match) {  
 9         host = match[1];  
10     }  
11     return host;  
12 }  

3、原生JavaScript清除空格

String.prototype.trim = function() {  
    var reExtraSpace = /^\s*(.*?)\s+$/;  
    return this.replace(reExtraSpace, "$1")  
}  

4、原生JavaScript替换全部

1 String.prototype.replaceAll = function(s1, s2) {  
2     return this.replace(new RegExp(s1, "gm"), s2)  
3 }  

5、原生JavaScript转义html标签

function HtmlDecode(text) {  
    return text.replace(/&/g, '&').replace(/"/g, '\"').replace(/</g, '<').replace(/>/g, '>')  
}  

6、原生JavaScript还原html标签

function HtmlDecode(text) {  
    return text.replace(/&/g, '&').replace(/"/g, '\"').replace(/</g, '<').replace(/>/g, '>')  
}  

7、原生JavaScript时间日期格式转换

Date.prototype.Format = function(formatStr) {  
    var str = formatStr;  
    var Week = ['日', '一', '二', '三', '四', '五', '六'];  
    str = str.replace(/yyyy|YYYY/, this.getFullYear());  
    str = str.replace(/yy|YY/, (this.getYear() % 100) > 9 ? (this.getYear() % 100).toString() : '0' + (this.getYear() % 100));  
    str = str.replace(/MM/, (this.getMonth() + 1) > 9 ? (this.getMonth() + 1).toString() : '0' + (this.getMonth() + 1));  
    str = str.replace(/M/g, (this.getMonth() + 1));  
    str = str.replace(/w|W/g, Week[this.getDay()]);  
    str = str.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : '0' + this.getDate());  
    str = str.replace(/d|D/g, this.getDate());  
    str = str.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString() : '0' + this.getHours());  
    str = str.replace(/h|H/g, this.getHours());  
    str = str.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : '0' + this.getMinutes());  
    str = str.replace(/m/g, this.getMinutes());  
    str = str.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : '0' + this.getSeconds());  
    str = str.replace(/s|S/g, this.getSeconds());  
    return str  
}  

8、原生JavaScript判断是否为数字类型

function isDigit(value) {  
    var patrn = /^[0-9]*$/;  
    if (patrn.exec(value) == null || value == "") {  
        return false  
    } else {  
        return true  
    }  
}  

11、原生JavaScript加入收藏夹

function AddFavorite(sURL, sTitle) {  
    try {  
        window.external.addFavorite(sURL, sTitle)  
    } catch(e) {  
        try {  
            window.sidebar.addPanel(sTitle, sURL, "")  
        } catch(e) {  
            alert("加入收藏失败,请使用Ctrl+D进行添加")  
        }  
    }  
}  

12、原生JavaScript设为首页

function setHomepage() {  
    if (document.all) {  
        document.body.style.behavior = 'url(#default#homepage)';  
        document.body.setHomePage('路径')  
    } else if (window.sidebar) {  
        if (window.netscape) {  
            try {  
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")  
            } catch(e) {  
                alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true")  
            }  
        }  
        var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);  
        prefs.setCharPref('browser.startup.homepage', '路径')  
    }  
}  

27、原生JavaScript获取当前路径

var currentPageUrl = "";  
if (typeof this.href === "undefined") {  
    currentPageUrl = document.location.toString().toLowerCase();  
}  
else {  
    currentPageUrl = this.href.toString().toLowerCase();  
}  

62、原生JavaScript常用的正则表达式

//正整数  
/^[0-9]*[1-9][0-9]*$/;  
//负整数  
/^-[0-9]*[1-9][0-9]*$/;  
//正浮点数  
/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;     
//负浮点数  
/^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;    
//浮点数  
/^(-?\d+)(\.\d+)?$/;  
//email地址  
/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;  
//url地址  
/^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/;  
//年/月/日(年-月-日、年.月.日)  
/^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/;  
//匹配中文字符  
/[\u4e00-\u9fa5]/;  
//匹配帐号是否合法(字母开头,允许5-10字节,允许字母数字下划线)  
/^[a-zA-Z][a-zA-Z0-9_]{4,9}$/;  
//匹配空白行的正则表达式  
/\n\s*\r/;  
//匹配中国邮政编码  
/[1-9]\d{5}(?!\d)/;  
//匹配身份证  
/\d{15}|\d{18}/;  
//匹配国内电话号码  
/(\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?)/;  
//匹配首尾空白字符的正则表达式  
/^\s*|\s*$/;  
//匹配HTML标记的正则表达式  
< (\S*?)[^>]*>.*?|< .*? />;  

63、原生JavaScript实现返回顶部的通用方法

function backTop(btnId) {  
    var btn = document.getElementById(btnId);  
    var d = document.documentElement;  
    var b = document.body;  
    window.onscroll = set;  
    btn.style.display = "none";  
    btn.onclick = function() {  
        btn.style.display = "none";  
        window.onscroll = null;  
        this.timer = setInterval(function() {  
            d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);  
            b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);  
            if ((d.scrollTop + b.scrollTop) == 0) clearInterval(btn.timer, window.onscroll = set);  
        },  
        10);  
    };  
    function set() {  
        btn.style.display = (d.scrollTop + b.scrollTop > 100) ? 'block': "none"  
    }  
};  
backTop('goTop');  

89、原生JavaScript实现金额大写转换函数

 1 function transform(tranvalue) {  
 2   try {  
 3     var i = 1;  
 4     var dw2 = new Array("", "万", "亿"); //大单位  
 5     var dw1 = new Array("拾", "佰", "仟"); //小单位  
 6     var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //整数部分用  
 7     //以下是小写转换成大写显示在合计大写的文本框中       
 8     //分离整数与小数  
 9     var source = splits(tranvalue);  
10     var num = source[0];  
11     var dig = source[1];  
12     //转换整数部分  
13     var k1 = 0; //计小单位  
14     var k2 = 0; //计大单位  
15     var sum = 0;  
16     var str = "";  
17     var len = source[0].length; //整数的长度  
18     for (i = 1; i <= len; i++) {  
19       var n = source[0].charAt(len - i); //取得某个位数上的数字  
20       var bn = 0;  
21       if (len - i - 1 >= 0) {  
22         bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字  
23       }  
24       sum = sum + Number(n);  
25       if (sum != 0) {  
26         str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面  
27         if (n == '0') sum = 0;  
28       }  
29       if (len - i - 1 >= 0) { //在数字范围内  
30         if (k1 != 3) { //加小单位  
31           if (bn != 0) {  
32             str = dw1[k1].concat(str);  
33           }  
34           k1++;  
35         } else { //不加小单位,加大单位  
36           k1 = 0;  
37           var temp = str.charAt(0);  
38           if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位  
39           str = str.substr(1, str.length - 1);  
40           str = dw2[k2].concat(str);  
41           sum = 0;  
42         }  
43       }  
44       if (k1 == 3) //小单位到千则大单位进一  
45       {  
46         k2++;  
47       }  
48     }  
49     //转换小数部分  
50     var strdig = "";  
51     if (dig != "") {  
52       var n = dig.charAt(0);  
53       if (n != 0) {  
54         strdig += dw[Number(n)] + "角"; //加数字  
55       }  
56       var n = dig.charAt(1);  
57       if (n != 0) {  
58         strdig += dw[Number(n)] + "分"; //加数字  
59       }  
60     }  
61     str += "元" + strdig;  
62   } catch(e) {  
63     return "0元";  
64   }  
65   return str;  
66 }  
67 //拆分整数与小数  
68 function splits(tranvalue) {  
69   var value = new Array('', '');  
70   temp = tranvalue.split(".");  
71   for (var i = 0; i < temp.length; i++) {  
72     value[i] = temp[i];  
73   }  
74   return value;  
75 }  

90、原生JavaScript常用的正则表达式大收集

匹配中文字符的正则表达式: [\u4e00-\u9fa5]   
匹配双字节字符(包括汉字在内):[^\x00-\xff]   
匹配空行的正则表达式:\n[\s| ]*\r   
匹配 HTML 标记的正则表达式:<(.*)>.*<\/\1>|<(.*) \/>  
匹配首尾空格的正则表达式:(^\s*)|(\s*$)   
匹配 IP 地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g  
匹配 Email 地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*  
匹配网址 URL 的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?  
sql 语句:^(select|drop|delete|create|update|insert).*$   
非负整数:^\d+$   
正整数:^[0-9]*[1-9][0-9]*$   
非正整数:^((-\d+)|(0+))$   
负整数:^-[0-9]*[1-9][0-9]*$   
整数:^-?\d+$   
非负浮点数:^\d+(\.\d+)?$   
正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$   
非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$   
英文字符串:^[A-Za-z]+$   
英文大写串:^[A-Z]+$   
英文小写串:^[a-z]+$   
英文字符数字串:^[A-Za-z0-9]+$   
英数字加下划线串:^\w+$   
E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$   
URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$   
邮政编码:^[1-9]\d{5}$   
电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$   
手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$   
双字节字符(包括汉字在内):^\x00-\xff   
匹配首尾空格:(^\s*)|(\s*$)  
匹配 HTML 标记:<(.*)>.*<\/\1>|<(.*) \/>   
匹配空行:\n[\s| ]*\r   
提取信息中的网络链接:(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+)   
提取信息中的中国手机号码:(86)*0*13\d{9}   
提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}   
提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}   
提取信息中的中国邮政编码:[1-9]{1}(\d+){5}   
提取信息中的浮点数(即小数):(-?\d*)\.?\d+   
提取信息中的任何数字 :(-?\d*)(\.\d+)?   
IP:(\d+)\.(\d+)\.(\d+)\.(\d+)   
电话区号:^0\d{2,3}$  
腾讯 QQ 号:^[1-9]*[1-9][0-9]*$   
帐号(字母开头,允许 5-16 字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$   
中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$  

 

posted @ 2013-12-31 13:51  思思博士  阅读(271)  评论(0编辑  收藏  举报