返回列表 回复 发帖

[JavaScript] 原生JavaScript技巧大收集

1、原生JavaScript实现字符串长度截取
  1. 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) {var host = "null";if(typeof url == "undefined"|| null == url) {url = window.location.href;}var regex = /^\w+\:\/\/([^\/]*).*/;var match = url.match(regex);if(typeof match != "undefined" && null != match) {host = match[1];}return host;}
复制代码
3、原生JavaScript清除空格
  1. String.prototype.trim = function() {var reExtraSpace = /^\s*(.*?)\s+$/;return this.replace(reExtraSpace, "$1")}
复制代码
4、原生JavaScript替换全部
  1. String.prototype.replaceAll = function(s1, s2) {return this.replace(new RegExp(s1, "gm"), s2)}
复制代码
5、原生JavaScript转义html标签
  1. function HtmlEncode(text) {return text.replace(/&/g, '&').replace(/\"/g, '"').replace(//g, '>')}
复制代码
6、原生JavaScript还原html标签
  1. function HtmlDecode(text) {return text.replace(/&/g, '&').replace(/"/g, '\"').replace(//g, '>')}
复制代码
7、原生JavaScript时间日期格式转换
  1. 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判断是否为数字类型
  1. function isDigit(value) {var patrn = /^[0-9]*$/;if (patrn.exec(value) == null || value == "") {return false} else {return true}}
复制代码
9、原生JavaScript设置cookie值
  1. function setCookie(name, value, Hours) {var d = new Date();var offset = 8;var utc = d.getTime() + (d.getTimezoneOffset() * 60000);var nd = utc + (3600000 * offset);var exp = new Date(nd);exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"}
复制代码
10、原生JavaScript获取cookie值
  1. function getCookie(name) {var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));if (arr != null) return unescape(arr[2]);return null}
复制代码
11、原生JavaScript加入收藏夹
  1. function AddFavorite(sURL, sTitle) {
  2.     try {
  3.         window.external.addFavorite(sURL, sTitle)
  4.     } catch(e) {
  5.         try {
  6.             window.sidebar.addPanel(sTitle, sURL, "")
  7.         } catch(e) {
  8.             alert("加入收藏失败,请使用Ctrl+D进行添加")
  9.         }
  10.     }
  11. }
复制代码
12、原生JavaScript设为首页
  1. function setHomepage() {
  2.     if (document.all) {
  3.         document.body.style.behavior = 'url(#default#homepage)';
  4.         document.body.setHomePage('http://www.jq-school.com')
  5.     } else if (window.sidebar) {
  6.         if (window.netscape) {
  7.             try {
  8.                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
  9.             } catch(e) {
  10.                 alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true")
  11.             }
  12.         }
  13.         var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
  14.         prefs.setCharPref('browser.startup.homepage', 'http://www.jq-school.com')
  15.     }
  16. }
复制代码
13、原生JavaScript判断IE6
  1. var ua = navigator.userAgent.toLowerCase();
  2. var isIE6 = ua.indexOf("msie 6") > -1;
  3. if (isIE6) {
  4.     try {
  5.         document.execCommand("BackgroundImageCache", false, true)
  6.     } catch(e) {}
  7. }
复制代码
14、原生JavaScript加载样式文件
  1. function LoadStyle(url) {
  2.     try {
  3.         document.createStyleSheet(url)
  4.     } catch(e) {
  5.         var cssLink = document.createElement('link');
  6.         cssLink.rel = 'stylesheet';
  7.         cssLink.type = 'text/css';
  8.         cssLink.href = url;
  9.         var head = document.getElementsByTagName('head')[0];
  10.         head.appendChild(cssLink)
  11.     }
  12. }
复制代码
15、原生JavaScript返回脚本内容
  1. function evalscript(s) {
  2.         if(s.indexOf('<script') == -1) return s;
  3.         var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
  4.         var arr = [];
  5.         while(arr = p.exec(s)) {
  6.                 var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i;
  7.                 var arr1 = [];
  8.                 arr1 = p1.exec(arr[0]);
  9.                 if(arr1) {
  10.                         appendscript(arr1[1], '', arr1[2], arr1[3]);
  11.                 } else {
  12.                         p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;
  13.                         arr1 = p1.exec(arr[0]);
  14.                         appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
  15.                 }
  16.         }
  17.         return s;
  18. }
复制代码
16、原生JavaScript清除脚本内容
  1. function stripscript(s) {
  2.         return s.replace(/<script.*?>.*?<\/script>/ig, '');
  3. }
复制代码
17、原生JavaScript动态加载脚本文件
  1. function appendscript(src, text, reload, charset) {
  2.         var id = hash(src + text);
  3.         if(!reload && in_array(id, evalscripts)) return;
  4.         if(reload && $(id)) {
  5.                 $(id).parentNode.removeChild($(id));
  6.         }

  7.         evalscripts.push(id);
  8.         var scriptNode = document.createElement("script");
  9.         scriptNode.type = "text/javascript";
  10.         scriptNode.id = id;
  11.         scriptNode.charset = charset ? charset : (BROWSER.firefox ? document.characterSet : document.charset);
  12.         try {
  13.                 if(src) {
  14.                         scriptNode.src = src;
  15.                         scriptNode.onloadDone = false;
  16.                         scriptNode.onload = function () {
  17.                                 scriptNode.onloadDone = true;
  18.                                 JSLOADED[src] = 1;
  19.                         };
  20.                         scriptNode.onreadystatechange = function () {
  21.                                 if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode.onloadDone) {
  22.                                         scriptNode.onloadDone = true;
  23.                                         JSLOADED[src] = 1;
  24.                                 }
  25.                         };
  26.                 } else if(text){
  27.                         scriptNode.text = text;
  28.                 }
  29.                 document.getElementsByTagName('head')[0].appendChild(scriptNode);
  30.         } catch(e) {}
  31. }
复制代码
18、原生JavaScript返回按ID检索的元素对象
  1. function $(id) {
  2.         return !id ? null : document.getElementById(id);
  3. }
复制代码
19、原生JavaScript返回浏览器版本内容
  1. function browserVersion(types) {
  2.         var other = 1;
  3.         for(i in types) {
  4.                 var v = types[i] ? types[i] : i;
  5.                 if(USERAGENT.indexOf(v) != -1) {
  6.                         var re = new RegExp(v + '(\\/|\\s)([\\d\\.]+)', 'ig');
  7.                         var matches = re.exec(USERAGENT);
  8.                         var ver = matches != null ? matches[2] : 0;
  9.                         other = ver !== 0 && v != 'mozilla' ? 0 : other;
  10.                 }else {
  11.                         var ver = 0;
  12.                 }
  13.                 eval('BROWSER.' + i + '= ver');
  14.         }
  15.         BROWSER.other = other;
  16. }
复制代码
20、原生JavaScript元素显示的通用方法
  1. function $(id) {
  2.         return !id ? null : document.getElementById(id);
  3. }
  4. function display(id) {
  5.         var obj = $(id);
  6.         if(obj.style.visibility) {
  7.                 obj.style.visibility = obj.style.visibility == 'visible' ? 'hidden' : 'visible';
  8.         } else {
  9.                 obj.style.display = obj.style.display == '' ? 'none' : '';
  10.         }
  11. }
复制代码
21、原生JavaScript中有insertBefore方法,可惜却没有insertAfter方法?用如下函数实现
  1. function insertAfter(newChild,refChild){
  2.         var parElem=refChild.parentNode;
  3.         if(parElem.lastChild==refChild){
  4.                 refChild.appendChild(newChild);
  5.         }else{
  6.                 parElem.insertBefore(newChild,refChild.nextSibling);
  7.         }
  8. }
复制代码
22、原生JavaScript中兼容浏览器绑定元素事件
  1. function addEventSamp(obj,evt,fn){
  2.         if (obj.addEventListener) {
  3.                 obj.addEventListener(evt, fn, false);
  4.         }else if(obj.attachEvent){
  5.                 obj.attachEvent('on'+evt,fn);
  6.         }
  7. }
复制代码
23、原生JavaScript光标停在文字的后面,文本框获得焦点时调用
  1. function focusLast(){
  2.         var e = event.srcElement;
  3.         var r =e.createTextRange();
  4.         r.moveStart('character',e.value.length);
  5.         r.collapse(true);
  6.         r.select();
  7. }
复制代码
24、原生JavaScript检验URL链接是否有效
  1. function getUrlState(URL){
  2.         var xmlhttp = new ActiveXObject("microsoft.xmlhttp");
  3.         xmlhttp.Open("GET",URL, false);  
  4.         try{  
  5.                 xmlhttp.Send();
  6.         }catch(e){
  7.         }finally{
  8.                 var result = xmlhttp.responseText;
  9.                 if(result){
  10.                         if(xmlhttp.Status==200){
  11.                                 return(true);
  12.                         }else{
  13.                                 return(false);
  14.                         }
  15.                 }else{
  16.                         return(false);
  17.                 }
  18.         }
  19. }
复制代码
25、原生JavaScript格式化CSS样式代码
  1. function formatCss(s){//格式化代码
  2.         s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
  3.         s = s.replace(/;\s*;/g, ";"); //清除连续分号
  4.         s = s.replace(/\,[\s\.\#\d]*{/g, "{");
  5.         s = s.replace(/([^\s])\{([^\s])/g, "$1 {\n\t$2");
  6.         s = s.replace(/([^\s])\}([^\n]*)/g, "$1\n}\n$2");
  7.         s = s.replace(/([^\s]);([^\s\}])/g, "$1;\n\t$2");
  8.         return s;
  9. }
复制代码
26、原生JavaScript压缩CSS样式代码
  1. function yasuoCss (s) {//压缩代码
  2.         s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //删除注释
  3.         s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
  4.         s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容错处理
  5.         s = s.replace(/;\s*;/g, ";"); //清除连续分号
  6.         s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白
  7.         return (s == null) ? "" : s[1];
  8. }
复制代码
27、原生JavaScript获取当前路径
  1. var currentPageUrl = "";
  2. if (typeof this.href === "undefined") {
  3.     currentPageUrl = document.location.toString().toLowerCase();
  4. }
  5. else {
  6.     currentPageUrl = this.href.toString().toLowerCase();
  7. }
复制代码
28、原生JavaScriptIP转成整型
  1. function _ip2int(ip){
  2.     var num = 0;
  3.     ip = ip.split(".");
  4.     num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]);
  5.     num = num >>> 0;
  6.     return num;
  7. }
复制代码
29、原生JavaScript整型解析为IP地址
  1. function _int2iP(num){
  2.     var str;
  3.     var tt = new Array();
  4.     tt[0] = (num >>> 24) >>> 0;
  5.     tt[1] = ((num << 8) >>> 24) >>> 0;
  6.     tt[2] = (num << 16) >>> 24;
  7.     tt[3] = (num << 24) >>> 24;
  8.     str = String(tt[0]) + "." + String(tt[1]) + "." + String(tt[2]) + "." + String(tt[3]);
  9.     return str;
  10. }
复制代码
30、原生JavaScript实现checkbox全选与全不选
  1. function checkAll() {
  2.         var selectall = document.getElementById("selectall");
  3.         var allbox = document.getElementsByName("allbox");
  4.         if (selectall.checked) {
  5.                 for (var i = 0; i < allbox.length; i++) {
  6.                         allbox.checked = true;
  7.                 }
  8.         } else {
  9.                 for (var i = 0; i < allbox.length; i++) {
  10.                         allbox.checked = false;
  11.                 }
  12.         }
  13. }
复制代码
31、原生JavaScript用正则表达式提取页面代码中所有网址
  1.         var aa = document.documentElement.outerHTML.match(/(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/ig).join("\r\n").replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/igm,"");
  2. alert(aa);
复制代码
32、原生JavaScript用正则表达式清除相同的数组(低效率)
  1. Array.prototype.unique=function(){
  2.     return this.reverse().join(",").match(/([^,]+)(?!.*\1)/ig).reverse();
  3. }
复制代码
33、原生JavaScript用正则表达式清除相同的数组(高效率)
  1. String.prototype.unique=function(){
  2.     var x=this.split(/[\r\n]+/);
  3.     var y='';
  4.     for(var i=0;i<x.length;i++){
  5.         if(!new RegExp("^"+x[i].replace(/([^\w])/ig,"\\$1")+"$","igm").test(y)){
  6.             y+=x[i]+"\r\n"
  7.         }
  8.     }
  9.     return y
  10. }
复制代码
34、原生JavaScript用正则表达式按字母排序,对每行进行数组排序
  1. function SetSort(){
  2.     var text=K1.value.split(/[\r\n]/).sort().join("\r\n");//顺序
  3.     var test=K1.value.split(/[\r\n]/).sort().reverse().join("\r\n");//反序
  4.     K1.value=K1.value!=text?text:test;
  5. }
复制代码
35、原生JavaScript字符串反序
  1. function IsReverse(text){
  2.     return text.split('').reverse().join('');
  3. }
复制代码
36、原生JavaScript用正则表达式清除html代码中的脚本
  1. function clear_script(){
  2.   K1.value=K1.value.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,"");
  3. }
复制代码
37、原生JavaScript动态执行JavaScript脚本
  1. function javascript(){
  2.     try{
  3.       eval(K1.value);
  4.     }catch(e){
  5.         alert(e.message);
  6.     }
  7. }
复制代码
38、原生JavaScript动态执行VBScript脚本
  1. function vbscript(){
  2.     try{
  3.         var script=document.getElementById("K1").value;
  4.         if(script.trim()=="")return;
  5.         window.execScript('On Error Resume Next \n'+script+'\n If Err.Number<>0 Then \n MsgBox "请输入正确的VBScript脚本!",48,"脚本错误!" \n End If',"vbscript")
  6.     }catch(e){
  7.         alert(e.message);
  8.     }
  9. }
复制代码
39、原生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. }
复制代码
40、原生JavaScript常用的正则表达式大收集
  1. 匹配中文字符的正则表达式: [\u4e00-\u9fa5]
  2. 匹配双字节字符(包括汉字在内):[^\x00-\xff]
  3. 匹配空行的正则表达式:\n[\s| ]*\r
  4. 匹配 HTML 标记的正则表达式:<(.*)>.*<\/\1>|<(.*) \/>
  5. 匹配首尾空格的正则表达式:(^\s*)|(\s*$)
  6. 匹配 IP 地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g
  7. 匹配 Email 地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
  8. 匹配网址 URL 的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
  9. sql 语句:^(select|drop|delete|create|update|insert).*$
  10. 非负整数:^\d+$
  11. 正整数:^[0-9]*[1-9][0-9]*$
  12. 非正整数:^((-\d+)|(0+))$
  13. 负整数:^-[0-9]*[1-9][0-9]*$
  14. 整数:^-?\d+$
  15. 非负浮点数:^\d+(\.\d+)?$
  16. 正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
  17. 非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$
  18. 英文字符串:^[A-Za-z]+$
  19. 英文大写串:^[A-Z]+$
  20. 英文小写串:^[a-z]+$
  21. 英文字符数字串:^[A-Za-z0-9]+$
  22. 英数字加下划线串:^\w+$
  23. E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
  24. URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$
  25. 邮政编码:^[1-9]\d{5}$
  26. 电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$
  27. 手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$
  28. 双字节字符(包括汉字在内):^\x00-\xff
  29. 匹配首尾空格:(^\s*)|(\s*$)
  30. 匹配 HTML 标记:<(.*)>.*<\/\1>|<(.*) \/>
  31. 匹配空行:\n[\s| ]*\r
  32. 提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
  33. 提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
  34. 提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
  35. 提取信息中的 IP 地址:(\d+)\.(\d+)\.(\d+)\.(\d+)
  36. 提取信息中的中国手机号码:(86)*0*13\d{9}
  37. 提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
  38. 提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}
  39. 提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
  40. 提取信息中的浮点数(即小数):(-?\d*)\.?\d+
  41. 提取信息中的任何数字 :(-?\d*)(\.\d+)?
  42. IP:(\d+)\.(\d+)\.(\d+)\.(\d+)
  43. 电话区号:^0\d{2,3}$
  44. 腾讯 QQ 号:^[1-9]*[1-9][0-9]*$
  45. 帐号(字母开头,允许 5-16 字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  46. 中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$
复制代码
返回列表