0%

记录一些js实用到码片段2

文章字数:2723,阅读全文大约需要10分钟

来自今日头条

  1. 原生JavaScript获取页面可视高度
    1
    2
    3
    4
    5
    6
    function getPageViewHeight() {
    var d = document, a = d.compatMode == "BackCompat"
    ? d.body
    : d.documentElement;
    return a.clientHeight;
    }
  2. 原生JavaScript跨浏览器添加事件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function addEvt(oTarget, sEvtType, fnHandle) {
    if(!oTarget) {return;}
    if(oTarget.addEventListener) {
    oTarget.addEventListener(sEvtType, fnHandle, false);
    } else if(oTarget.attachEvent) {
    oTarget.attachEvent("on" + sEvtType, fnHandle);
    } else {
    oTarget["on" + sEvtType] = fnHandle;
    }
    }
  3. 原生JavaScript跨浏览器删除事件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function delEvt(oTarget, sEvtType, fnHandle){
    if(!oTarget) {return;}
    if(oTarget.addEventListener) {
    oTarget.addEventListener(sEvtType,fnHandle,false);
    } else if(oTarget.attachEvent) {
    oTarget.attachEvent("on" + sEvtType,fnHandle);
    } else {
    oTarget["on" + sEvtType] = fnHandle;
    }
    }
  4. 原生JavaScript去掉url前缀
    1
    2
    3
    4
    5
    6
    7
    function removeUrlPrefix(a) {
    a = a.replace(/:/g,":").replace(/./g,".").replace(///g,"/");
    while(trim(a).toLowerCase().indexOf("http://") == 0) {
    a = trim(a.replace(/http:///i,""));
    }
    return a;
    }
  5. 原生JavaScript随机数时间戳
    1
    2
    3
    4
    function uniqueId() {
    var a = Math.random, b = parseInt;
    return Number(new Date()).toString()+b(10*a())+b(10*a())+b(10*a());
    }
  6. 原生JavaScript全角半角转换,iCase: 0全到半,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
    function chgCase(sStr,iCase){
    if(typeof sStr != "string" || sStr.length <= 0 || !(iCase === 0 || iCase == 1)){
    return sStr;
    }
    var i,oRs=[],iCode;
    if(iCase){/*半->全*/
    for(i=0; i<sStr.length;i+=1){
    iCode = sStr.charCodeAt(i);
    if(iCode == 32){
    iCode = 12288;
    }else if(iCode < 127){
    iCode += 65248;
    }
    oRs.push(String.fromCharCode(iCode));
    }
    }else{/*全->半*/
    for(i=0; i<sStr.length;i+=1){
    iCode = sStr.charCodeAt(i);
    if(iCode == 12288){
    iCode = 32;
    }else if(iCode > 65280 && iCode < 65375){
    iCode -= 65248;
    }
    oRs.push(String.fromCharCode(iCode));
    }
    }
    return oRs.join("");
    }
  7. 原生JavaScript确认是否键盘有效输入值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function checkKey(iKey){
    if(iKey == 32 || iKey == 229){return true;} /*空格和异常*/
    if(iKey>47 && iKey < 58){return true;} /*数字*/
    if(iKey>64 && iKey < 91){return true;} /*字母*/
    if(iKey>95 && iKey < 108){return true;} /*数字键盘1*/
    if(iKey>108 && iKey < 112){return true;} /*数字键盘2*/
    if(iKey>185 && iKey < 193){return true;} /*符号1*/
    if(iKey>218 && iKey < 223){return true;} /*符号2*/
    return false;
    }
  8. 原生JavaScript获取网页被卷去的位置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function getScrollXY() {
    return document.body.scrollTop ? {
    x: document.body.scrollLeft,
    y: document.body.scrollTop
    }: {
    x: document.documentElement.scrollLeft,
    y: document.documentElement.scrollTop
    }
    }
  9. 原生JavaScript另一种正则日期格式化函数+调用方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Date.prototype.format = function(format) { // author: meizz
    var o = {
    "M+" : this.getMonth() + 1, // month
    "d+" : this.getDate(), // day
    "h+" : this.getHours(), // hour
    "m+" : this.getMinutes(), // minute
    "s+" : this.getSeconds(), // second
    "q+" : Math.floor((this.getMonth() + 3) / 3), // quarter
    "S" : this.getMilliseconds() // millisecond
    }
    if(/(y+)/.test(format)) {
    format=format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    }
    for(var k in o)if(new RegExp("("+ k +")").test(format)) {
    format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
    }
    return format;
    }
    alert(new Date().format("yyyy-MM-dd hh:mm:ss"));
  10. 原生JavaScript时间个性化输出功能
    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
    /*
    1、< 60s, 显示为“刚刚”
    2、>= 1min && < 60 min, 显示与当前时间差“XX分钟前”
    3、>= 60min && < 1day, 显示与当前时间差“今天 XX:XX”
    4、>= 1day && < 1year, 显示日期“XX月XX日 XX:XX”
    5、>= 1year, 显示具体日期“XXXX年XX月XX日 XX:XX”
    */
    function timeFormat(time){
    var date = new Date(time)
    , curDate = new Date()
    , year = date.getFullYear()
    , month = date.getMonth() + 1
    , day = date.getDate()
    , hour = date.getHours()
    , minute = date.getMinutes()
    , curYear = curDate.getFullYear()
    , curHour = curDate.getHours()
    , timeStr;
    if(year < curYear){
    timeStr = year +'年'+ month +'月'+ day +'日 '+ hour +':'+ minute;
    }else{
    var pastTime = curDate - date
    , pastH = pastTime/3600000;
    if(pastH > curHour){
    timeStr = month +'月'+ day +'日 '+ hour +':'+ minute;
    }else if(pastH >= 1){
    timeStr = '今天 ' + hour +':'+ minute +'分';
    }else{
    var pastM = curDate.getMinutes() - minute;
    if(pastM > 1){
    timeStr = pastM +'分钟前';
    }else{
    timeStr = '刚刚';
    }
    }
    }
    return timeStr;
    }
  11. 原生JavaScript解决offsetX兼容性问题
    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
    // 针对火狐不支持offsetX/Y
    function getOffset(e) {
    var target = e.target, // 当前触发的目标对象
    eventCoord,
    pageCoord,
    offsetCoord;
    // 计算当前触发元素到文档的距离
    pageCoord = getPageCoord(target);
    // 计算光标到文档的距离
    eventCoord = {
    X : window.pageXOffset + e.clientX,
    Y : window.pageYOffset + e.clientY
    };
    // 相减获取光标到第一个定位的父元素的坐标
    offsetCoord = {
    X : eventCoord.X - pageCoord.X,
    Y : eventCoord.Y - pageCoord.Y
    };
    return offsetCoord;
    }
    function getPageCoord(element) {
    var coord = { X : 0, Y : 0 };
    // 计算从当前触发元素到根节点为止,
    // 各级 offsetParent 元素的 offsetLeft 或 offsetTop 值之和
    while (element){
    coord.X += element.offsetLeft;
    coord.Y += element.offsetTop;
    element = element.offsetParent;
    }
    return coord;
    }
  12. 原生JavaScript常用的正则表达式
    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
    //正整数
    /^[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)dd[- /.](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}$/;
    //匹配空白行的正则表达式
    /
    s*
    /;
    //匹配中国邮政编码
    /[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]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)/;
    //匹配首尾空白字符的正则表达式
    /^s*|s*$/;
    //匹配HTML标记的正则表达式
    < (S*?)[^>]*>.*?|< .*? />;
  13. 原生JavaScript实现返回顶部的通用方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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');
  14. 原生JavaScript获得URL中的GET参数值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // 用法:如果地址是 test.htm?t1=1&t2=2&t3=3, 那么能取得:GET["t1"], GET["t2"], GET["t3"]
    function get_get() {
    querystr = window.location.href.split("?");
    if(querystr[1]) {
    var GETs = querystr[1].split("&"),
    GET = new Array();
    for(i = 0; i < GETs.length; i++){
    tmp_arr = GETs[i].split("=");
    key = tmp_arr[0];
    GET[key] = tmp_arr[1];
    }
    }
    return querystr[1];
    }
  15. 原生JavaScript实现全选通用方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function checkall(form, prefix, checkall) {
    var checkall = checkall ? checkall : 'chkall';
    for(var i = 0; i < form.elements.length; i++) {
    var e = form.elements[i];
    if(e.type=="checkbox"){
    e.checked = form.elements[checkall].checked;
    }
    }
    }
  16. 原生JavaScript实现全部取消选择通用方法
    1
    2
    3
    4
    5
    6
    7
    function uncheckAll(form) {
    for (var i = 0; i < form.elements.length; i++){
    var e = form.elements[i];
    if (e.name != 'chkall')
    e.checked = !e.checked;
    }
    }
  17. 原生JavaScript实现打开一个窗体通用方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function openWindow(url,windowName,width,height){
    var x = parseInt(screen.width / 2.0) - (width / 2.0);
    var y = parseInt(screen.height / 2.0) - (height / 2.0);
    var isMSIE= (navigator.appName == "Microsoft Internet Explorer");
    if (isMSIE) {
    var p = "resizable=1,location=no,scrollbars=no,width=";
    p = p+width;
    p = p+",height=";
    p = p+height;
    p = p+",left=";
    p = p+x;
    p = p+",top=";
    p = p+y;
    retval = window.open(url, windowName, p);
    } else {
    var win = window.open(url, "ZyiisPopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,modal=yes,width=" + width + ",height=" + height + ",resizable=no" );
    eval("try { win.resizeTo(width, height); } catch(e) { }");
    win.focus();
    }
    }
  18. 原生JavaScript判断是否为客户端设备
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function client(o){ 
    var b = navigator.userAgent.toLowerCase();
    var t = false;
    if (o == 'isOP'){
    t = b.indexOf('opera') > -1;
    }
    if (o == 'isIE'){
    t = b.indexOf('msie') > -1;
    }
    if (o == 'isFF'){
    t = b.indexOf('firefox') > -1;
    }
    return t;
    }
  19. 原生JavaScript获取单选按钮的值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function get_radio_value(field){
    if(field && field.length){
    for(var i = 0; i < field.length; i++){
    if(field[i].checked){
    return field[i].value;
    }
    }
    }else {
    return;
    }
    }
  20. 原生JavaScript获取复选框的值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function get_checkbox_value(field) { 
    if(field && field.length){
    for(var i = 0; i < field.length; i++){
    if(field[i].checked && !field[i].disabled){
    return field[i].value;
    }
    }
    } else {
    return;
    }
    }
  21. 原生JavaScript判断是否为邮箱
    1
    2
    3
    4
    5
    6
    7
    8
    function isEmail(str){
    var re=/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/;
    if (re.test(str) != true) {
    return false;
    }else{
    return true;
    }
    }
  22. 原生JavaScript判断是否有列表中的危险字符
    1
    2
    3
    4
    5
    6
    7
    8
    function isValidReg(chars){
    var re=/<|>|[|]|{|}|『|』|※||||§|||||||□||㊣|﹋|⊕|⊙|〒|ㄅ|ㄆ|ㄇ|ㄈ|ㄉ|ㄊ|ㄋ|ㄌ|ㄍ|ㄎ|ㄏ|ㄐ|ㄑ|ㄒ|ㄓ|ㄔ|ㄕ|ㄖ|ㄗ|ㄘ|ㄙ|ㄚ|ㄛ|ㄜ|ㄝ|ㄞ|ㄟ|ㄢ|ㄣ|ㄤ|ㄥ|ㄦ|ㄧ|ㄨ|ㄩ|■|▄|▆|*|@|#|^|\/;
    if (re.test( chars) == true) {
    return false;
    }else{
    return true;
    }
    }
  23. 原生JavaScript判断字符串是否大于规定的长度
    1
    2
    3
    4
    5
    6
    function isValidLength(chars, len) {
    if (chars.length < len) {
    return false;
    }
    return true;
    }
  24. 原生JavaScript判断字符串是为网址不区分大小写
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function isValidURL( chars ) {
    var re=/^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(S+.S+)$/;
    if (!isNULL(chars)) {
    chars = jsTrim(chars);
    if (chars.match(re) == null)
    return false;
    else
    return true;
    }
    return false;
    }
  25. 原生JavaScript判断字符串是否为小数
    1
    2
    3
    4
    5
    6
    7
    function isValidDecimal( chars ) {
    var re=/^d*.?d{1,2}$/;
    if (chars.match(re) == null)
    return false;
    else
    return true;
    }
  26. 原生JavaScript判断字符串是否为整数
    1
    2
    3
    4
    5
    6
    7
    function isNumber(chars) {
    var re=/^d*$/;
    if (chars.match(re) == null)
    return false;
    else
    return true;
    }
  27. 原生JavaScript判断字符串是否为浮点数
    1
    2
    3
    4
    5
    6
    7
    8
    function isFloat(str) {
    for(i=0;i<str.length;i++) {
    if((str.charAt(i)<"0" || str.charAt(i)>"9")&& str.charAt(i) != '.') {
    return false;
    }
    }
    return true;
    }
  28. 原生JavaScript判断字符是否为A-Za-z英文字母
    1
    2
    3
    4
    5
    6
    7
    function isLetters(str) {
    var re = /^[A-Za-z]+$/;
    if (str.match(re) == null)
    return false;
    else
    return true;
    }
  29. 原生JavaScript判断字符串是否邮政编码
    1
    2
    3
    4
    5
    6
    7
    function isValidPost( chars ) {
    var re=/^d{6}$/;
    if (chars.match(re) == null)
    return false;
    else
    return true;
    }
  30. 原生JavaScript判断字符是否空NULL
    1
    2
    3
    4
    5
    6
    7
    function isNULL( chars ) {
    if (chars == null)
    return true;
    if (jsTrim(chars).length == 0)
    return true;
    return false;
    }
  31. 原生JavaScript用正则表达式提取页面代码中所有网址
    1
    2
    3
    var aa = document.documentElement.outerHTML.match(/(url(|src=|href=)["']*([^"'()<>[] ]+)["')]*|(http://[w-.]+[^"'()<>[] ]+)/ig).join("
    ").replace(/^(src=|href=|url()["']*|["'>) ]*$/igm,"");
    alert(aa);
  32. 原生JavaScript用正则表达式清除相同的数组(低效率)
    1
    2
    3
    Array.prototype.unique = function() {
    return this.reverse().join(",").match(/([^,]+)(?!.*)/ig).reverse();
    }
  33. 原生JavaScript用正则表达式清除相同的数组(高效率)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    String.prototype.unique = function() {
    var x = this.split(/[
    ]+/);
    var y = '';
    for(var i = 0; i < x.length; i++){
    if(!new RegExp("^"+x[i].replace(/([^w])/ig,"\$1")+"$","igm").test(y)) {
    y + = x[i]+"
    ";
    }
    }
    return y;
    }
  34. 原生JavaScript用正则表达式按字母排序,对每行进行数组排序
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function SetSort(){
    var text = K1.value.split(/[
    ]/).sort().join("
    "); // 顺序
    var test = K1.value.split(/[
    ]/).sort().reverse().join("
    "); // 反序
    K1.value = (K1.value != text) ? text : test;
    }
  35. 原生JavaScript字符串反序
    1
    2
    3
    function IsReverse(text) {
    return text.split('').reverse().join('');
    }
  36. 原生JavaScript用正则表达式清除html代码中的脚本
    1
    2
    3
    function clear_script() {
    K1.valu e= K1.value.replace(/<script.*?>[sS]*?</script>|s+on[a-zA-Z]{3,16}s?=s?"[sS]*?"|s+on[a-zA-Z]{3,16}s?=s?'[sS]*?'|s+on[a-zA-Z]{3,16}s?=[^ >]+/ig,"");
    }
  37. 原生JavaScript动态执行JavaScript脚本
    1
    2
    3
    4
    5
    6
    7
    function javascript(){
    try{
    eval(K1.value);
    }catch(e){
    alert(e.message);
    }
    }
  38. 原生JavaScript动态执行VBScript脚本
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function vbscript() {
    try{
    var script = document.getElementById("K1").value;
    if(script.trim()=="") return;
    window.execScript('On Error Resume Next
    '+script+'
    If Err.Number<>0 Then
    MsgBox "请输入正确的VBScript脚本!",48,"脚本错误!"
    End If',"vbscript")
    } catch(e) {
    alert(e.message);
    }
    }
  39. 原生JavaScript实现金额大写转换函数
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    function transform(tranvalue) {
    try {
    var i = 1;
    var dw2 = new Array("", "万", "亿"); //大单位
    var dw1 = new Array("拾", "佰", "仟"); //小单位
    var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //整数部分用
    //以下是小写转换成大写显示在合计大写的文本框中
    //分离整数与小数
    var source = splits(tranvalue);
    var num = source[0];
    var dig = source[1];
    //转换整数部分
    var k1 = 0; //计小单位
    var k2 = 0; //计大单位
    var sum = 0;
    var str = "";
    var len = source[0].length; //整数的长度
    for (i = 1; i <= len; i++) {
    var n = source[0].charAt(len - i); //取得某个位数上的数字
    var bn = 0;
    if (len - i - 1 >= 0) {
    bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字
    }
    sum = sum + Number(n);
    if (sum != 0) {
    str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面
    if (n == '0') sum = 0;
    }
    if (len - i - 1 >= 0) { //在数字范围内
    if (k1 != 3) { //加小单位
    if (bn != 0) {
    str = dw1[k1].concat(str);
    }
    k1++;
    } else { //不加小单位,加大单位
    k1 = 0;
    var temp = str.charAt(0);
    if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位
    str = str.substr(1, str.length - 1);
    str = dw2[k2].concat(str);
    sum = 0;
    }
    }
    if (k1 == 3) //小单位到千则大单位进一
    {
    k2++;
    }
    }
    //转换小数部分
    var strdig = "";
    if (dig != "") {
    var n = dig.charAt(0);
    if (n != 0) {
    strdig += dw[Number(n)] + "角"; //加数字
    }
    var n = dig.charAt(1);
    if (n != 0) {
    strdig += dw[Number(n)] + "分"; //加数字
    }
    }
    str += "元" + strdig;
    } catch(e) {
    return "0元";
    }
    return str;
    }
    //拆分整数与小数
    function splits(tranvalue) {
    var value = new Array('', '');
    temp = tranvalue.split(".");
    for (var i = 0; i < temp.length; i++) {
    value[i] = temp[i];
    }
    return value;
    }
  40. 原生JavaScript常用的正则表达式大收集
    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
    匹配中文字符的正则表达式: [\u4e00-\u9fa5] 
    匹配双字节字符(包括汉字在内):[^\x00-\xff]
    匹配空行的正则表达式:
    [s| ]*

    匹配 HTML 标记的正则表达式:<(.*)>.*</>|<(.*) />
    匹配首尾空格的正则表达式:(^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}-))?((0d{2,3})|0d{2,3}-)?[1-9]d{6,7}(-d{1,4})?$
    手机号码:^(((d{2,3}))|(d{3}-))?13d{9}$
    双字节字符(包括汉字在内):^\x00-\xff
    匹配首尾空格:(^s*)|(s*$)
    匹配 HTML 标记:<(.*)>.*</>|<(.*) />
    匹配空行:
    [s| ]*

    提取信息中的网络链接:(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*13d{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+)
    电话区号:^0d{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]+$
  41. 原生JavaScript实现窗体改变事件resize的操作(兼容所有的浏览器)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    (function(){
    var fn = function(){
    var w = document.documentElement ? document.documentElement.clientWidth : document.body.clientWidth
    ,r = 1255
    ,b = Element.extend(document.body)
    ,classname = b.className;
    if(w < r){
    // 当窗体的宽度小于1255的时候执行相应的操作
    }else{
    // 当窗体的宽度大于1255的时候执行相应的操作
    }
    }
    if(window.addEventListener){
    window.addEventListener('resize', function(){ fn(); });
    }else if(window.attachEvent){
    window.attachEvent('onresize', function(){ fn(); });
    }
    fn();
    })();
  42. 原生JavaScript用正则清除空格分左右
    1
    2
    3
    function ltrim(s){ return s.replace( /^(s*| *)/, ""); } 
    function rtrim(s){ return s.replace( /(s*| *)$/, ""); }
    function trim(s){ return ltrim(rtrim(s)); }
  43. 原生JavaScript判断变量是否空值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    /**
    * 判断变量是否空值
    * undefined, null, '', false, 0, [], {} 均返回true,否则返回false
    */
    function empty(v){
    switch (typeof v){
    case 'undefined' : return true;
    case 'string' : if(trim(v).length == 0) return true; break;
    case 'boolean' : if(!v) return true; break;
    case 'number' : if(0 === v) return true; break;
    case 'object' :
    if(null === v) return true;
    if(undefined !== v.length && v.length==0) return true;
    for(var k in v){return false;} return true;
    break;
    }
    return false;
    }
  44. 原生JavaScript实现base64解码
    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;
    }
    95, 原生JavaScript实现utf8解码
    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('');
    }
  45. 原生JavaScript获取窗体可见范围的宽与高
    1
    2
    3
    4
    5
    6
    7
    function getViewSize() {
    var de = document.documentElement;
    var db = document.body;
    var viewW = de.clientWidth == 0 ? db.clientWidth : de.clientWidth;
    var viewH = de.clientHeight == 0 ? db.clientHeight : de.clientHeight;
    return Array(viewW ,viewH);
    }
  46. 原生JavaScript判断IE版本号(既简洁、又向后兼容!)
    1
    2
    3
    4
    5
    6
    7
    8
    var _IE = (function(){
    var v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i');
    while (
    div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
    all[0]
    );
    return v > 4 ? v : false ;
    }());
  47. 原生JavaScript获取浏览器版本号
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function browserVersion(types) {
    var other = 1;
    for (i in types) {
    var v = types[i] ? types[i] : i;
    if (USERAGENT.indexOf(v) != -1) {
    var re = new RegExp(v + '(\/|\s|:)([\d\.]+)', 'ig');
    var matches = re.exec(USERAGENT);
    var ver = matches != null ? matches[2] : 0;
    other = ver !== 0 && v != 'mozilla' ? 0 : other;
    } else {
    var ver = 0;
    }
    eval('BROWSER.' + i + '= ver');
    }
    BROWSER.other = other;
    }
  48. 原生JavaScript半角转换为全角函数
    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;
    }
  49. 原生JavaScript全角转换为半角函数
    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;
    }