超有用的JS正则表达式大全!!!!!!_回眸一惊
js正则表达式实例(汇总)
js正则表达式实例(汇总)来源:如何⽤JAVASCRIPT 正则表达式取出字符串最后⼀组数字,谢谢如30CAC0040 取出403SFASDF92 取出92正则如下://d+$/g统⼀空格个数来源:正则匹配空格的问题字符串内字符键有空格,但是空格的数量可能不⼀致,通过正则将空格的个数统⼀变为⼀个。
例如:蓝⾊理想变成:蓝⾊理想aobert的正则:<script>var str="蓝⾊理想"var reg=//s+/gstr = str.replace(reg," ")document.write(str)</script>判断字符串是不是由数字组成来源:有没有简单的⽅法判断字符串由数字组成?这个正则⽐较简单,写了⼀个测试<script type="text/javascript">function isDigit(str){var reg = /^/d*$/;return reg.test(str);}var str = "7654321";document.write(isDigit(str));var str = "test";document.write(isDigit(str));</script>电话号码正则来源:想问⼀下关于电话号码的正则判断:求⼀个验证电话号码的JS正则/^/d{3,4}-/d{7,8}(-/d{3,4})?$/区号必填为3-4位的数字,区号之后⽤“-”与电话号码连接^/d{3,4}-电话号码为7-8位的数字/d{7,8}分机号码为3-4位的数字,⾮必填,但若填写则以“-”与电话号码相连接(-/d{3,4})?⼿机号码正则表达式正则验证⼿机号,忽略前⾯的0,⽀持130-139,150-159。
忽略前⾯0之后判断它是11位的。
JS正则表达式大全
JS正则表达式大全JS正则表达式大全【1】正则表达式中的特殊字符【留着以后查用】字符含意\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。
-或-对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。
^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa? 匹配前面元字符0次或1次,/ba*/将匹配b,ba(x) 匹配x保存x在名为$1...$9的变量中x|y 匹配x或y{n} 精确匹配n次{n,} 匹配n次以上{n,m} 匹配n-m次[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)[^xyz] 不匹配这个集合中的任何一个字符[\b] 匹配一个退格符\b 匹配一个单词的边界\B 匹配一个单词的非边界\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M\d 匹配一个字数字符,/\d/ = /[0-9]/\D 匹配一个非字数字符,/\D/ = /[^0-9]/\n 匹配一个换行符\r 匹配一个回车符\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/\t 匹配一个制表符\v 匹配一个重直制表符\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。
JS常用正则表达式及验证时间的正则表达式
JS常⽤正则表达式及验证时间的正则表达式在这篇⽂章⾥,我已经编写了12个超有⽤的正则表达式,这可是WEB开发⼈员的最爱哦。
1.在input框中只能输⼊⾦额,其实就是只能输⼊最多有两位⼩数的数字 //第⼀种在input输⼊框限制<input type="text" maxlength="8" class="form-control" id="amount" style="margin-right: 2px;" value="" onChange="count();" onkeyup="if (this.value==this.value2) return; if (this.value.search(/^\d*(?:\.\d{0,2})?$/)==-1) this.value=(this.value2)?this.value2:'';else th //第⼆种对于表单动态增加的⽅式,只能在js⽅法中验证。
var amount=$("#amount").val();if (amount.search(/^\d*(?:\.\d{0,2})?$/)==-1) {alert("⾦额格式不对,最多有两位⼩数");return false;}2.验证邮箱格式var reg=/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;var email=$("#email").val();if(!reg.test(email) ){alert("请输⼊符合规范的邮箱账号!");return false;}3.密码采⽤数字、字母、特殊字符且长度为8-20位function validatePwd(str) {if (/^.*?[\d]+.*$/.test(str) && /^.*?[A-Za-z]/.test(str)&& /^.*?[~/`!@#$%^&*()_+|{}?;:><\-\]\\[\/].*$/.test(str) && /^.{8,20}$/.test(str)) {return true;}return false;}4.验证电话号码/*** 验证电话号码* @param phoneValue 要验证的电话号码* @returns 匹配返回true 不匹配返回false*/function validatePhone(phoneValue) {phoneValue = valueTrim(phoneValue);var reg = /^[1][0-9]{10}$/;return reg.test(phoneValue);}5.判断是否是汉字/*** 判断是否是汉字** @param charValue* 要验证的数据* @returns 匹配返回true 不匹配返回false*/function isCharacter(charValue) {var reg = /^[\u4e00-\u9fa5]{0,}$/;return reg.test(charValue);}6.是否为字母:true:是,false:不是function isChar(charValue){var charPattern=/^[a-zA-Z]*$/; //是否为字母result=charPattern.test(charValue);return result;}7.判断是否为数字function isNum(numValue){var numPattern=/^\d*$/; //数字的正则表达式result=numPattern.test(numValue);return result;}8.整数的正则表达式function isInt(intValue){var intPattern=/^0$|^[1-9]\d*$/; //整数的正则表达式result=intPattern.test(intValue);return result;}9.是否为字母和数字function isCharNum(flagValue){var flagPattern=/^[a-zA-Z0-9]*$/; //是否为字母和数字result=flagPattern.test(flagValue);return result;}10.检验18位⾝份证号码/*** 检验18位⾝份证号码(15位号码可以只检测⽣⽇是否正确即可,⾃⾏解决)** @param idCardValue* 18位⾝份证号* @returns 匹配返回true 不匹配返回false*/function idCardVildate(cid) {var arrExp = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];// 加权因⼦var arrValid = [ 1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2 ];// 校验码var reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;if (reg.test(cid)) {var sum = 0, idx;for (var i = 0; i < cid.length - 1; i++) {// 对前17位数字与权值乘积求和sum += parseInt(cid.substr(i, 1), 10) * arrExp[i];}// 计算模(固定算法)idx = sum % 11;// 检验第18为是否与校验码相等return arrValid[idx] == cid.substr(17, 1).toUpperCase();} else {return false;}}11.验证15位数⾝份证号码中的⽣⽇是否是有效⽣⽇function isValidityBrithBy15IdCard(idCard15) {var year = idCard15.substring(6, 8);var month = idCard15.substring(8, 10);var day = idCard15.substring(10, 12);var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));// 对于⽼⾝份证中的你年龄则不需考虑千年⾍问题⽽使⽤getYear()⽅法if (temp_date.getYear() != parseFloat(year)|| temp_date.getMonth() != parseFloat(month) - 1|| temp_date.getDate() != parseFloat(day)) {return false;} else {return true;}}12.验证18位数⾝份证号码中的⽣⽇是否是有效⽣⽇function isValidityBrithBy18IdCard(idCard18) {var year = idCard18.substring(6, 10);var month = idCard18.substring(10, 12);var day = idCard18.substring(12, 14);var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));// 这⾥⽤getFullYear()获取年份,避免千年⾍问题if (temp_date.getFullYear() != parseFloat(year)|| temp_date.getMonth() != parseFloat(month) - 1|| temp_date.getDate() != parseFloat(day)) {return false;} else {return true;}}PS:js验证时间正则表达式验证时间格式为:2012-01-31 09:00:22var reDateTime = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/;var isDateTime = reDateTime.test('2012-01-31 09:00:22');以上所述是⼩编给⼤家介绍的JS常⽤正则表达式及验证时间的正则表达式,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
JS常用正则表达式
}
else{
returnfalse;
}
};
/*
用途:检查输入字符串是否只由英文字母和数字和下划线组成
输入:s:字符串
返回:如果通过验证返回true,否则返回false
*/
functionisNumberOr_Letter(s)
{
//判断是否是数字或字母
varregu="^[0-9a-zA-Z\_]+$";
}
};
/*
用途:判断是否是日期
输入:date:日期;fmt:日期格式
返回:如果通过验证返回true,否则返回false
*/
functionisDate(date,fmt)
{
if(fmt==null){
fmt="yyyyMMdd";
}
varyIndex=fmt.indexOf("yyyy");
if(yIndex==-1){
最近经常使用js,少不了要用正则表达式做判断,晚上搜了一下,感觉这个比较齐全,所以收藏了。
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
js经典正则表达式
//var pattern=/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/;//字母开头,限制5-16字节,允许字母数字下划线
//var pattern=/^\d{3}-\d{8}|\d{4}-\d{7,8}$/;//匹配国内电话 如:0739-8888888(8) 或 020-88888888
//var pattern=/^(\w)\1{4,}*$/;//匹配整数
//var pattern=/-?[1-9]\d*$/;//匹配整数
//var pattern=/^[1-9]\d*$/;//匹配正整数
//var pattern=/^-[1-9]\d*$/;//匹配负整数
//var pattern=/^[1-9]\d*|0$/;//匹配非负整数
//var pattern2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;//18位的身份证
var pattern=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;//匹配E-MALI地址
'限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
JavaScript正则表达式大全
^The caret (^) tells the regular expression that the character must not match the characters to follow.比如要匹配所有除了a或b的字符,字符类可以这么写[^ab]^定位符规定匹配模式必须出现在目标字符串的开头那是否说^在[ ] 里面就表示排除(负向类), 在[ ] 前面就表示要在开头?$ 定位符规定匹配模式必须出现在目标对象的结尾-范围类,如要匹配a到z的所有字母,字符类可以这么写[a-z]{n} 出现多少次/^[0-9]{7}$/ 匹配的就是一个仅包含7个数字的字符串7.1 RegExp 对象可以有一个或两个参数.var reCat = new RegExp("cat") //这个表达式只会匹配字符串中出现的第一个"cat"var reCat = new RegExp("cat","g")//匹配所有出现的"cat"正则表达式字面量var reCat = /cat/gi;注意字面量不需要放在引号里判断某个字符串是否匹配指定的模式RegExp.test(str)如果给定的字符串匹配这个模式,返回true,否则返回false . reCat.test("cat")//返回trueRegExp.exec(str)返回一个数组,数组中第一个元素是匹配字符串,其他是反向引用 . 如果没有找到匹配,返回null返回的数组有一个index 属性,这个属性的值是匹配字符串中第一个字符在原字符串中的下标var toMarch6 = "1 3";var regExp6 = /(\d+)\s*(\d+)/;var result = regExp6.exec(toMarch6);dwr(result);//1 3,1,3dwr(RegExp.$1 +" "+RegExp.$2);//1 3当正则表达式加上了参数g,这个正则表达式会从正则表达式对象的lastIndex属性指定的位置开始查找,如果找到一个匹配,会将lastIndex属性设置为匹配字符串后面一个位置的下标.var toMarch7 = "1 3 4 5";var regExp7 = /(\d+)\s*(\d+)/g;var result7while((result7= regExp7.exec(toMarch7)) !=null){dwr(result7);//分别为1 3,1,3 和 4 5,4,5dwr(stIndex);//分别为3和7}String.match(reCat)返回一个包含在字符串中的所有匹配的数组var toMatch = "a bat, a cat, a fAt baT,a faT cat";var reAt = /at/gi;//如果不加参数g,返回的数组只会包含一个匹配元素var arrMatchs = toMatch.match(reAt);返回一个数组["at","at","At","aT","aT","at"]String.search(reCat)与indexOf类似,返回在字符串中出现的第一个匹配的位置,全局匹配表达式g 在这里不起作用toMatch.search(reAt);//输出3String.replace(matchStr, replaceStr)用第二个参数替换某个子串(第一个参数)的所有匹配 . 第一个参数既可以是匹配的字符串,也可以是用于匹配的一个正则表达式,返回是替换后的整个字符串var sToChange = "The sky is red";var reRed = /red/;sToChange.replace(reRed,"blue"); //输出The sky is blueString.split(reCat)将字符串分割成子串,作为数组返回var sColor = "red, blue, yellow";var reExp = /\,/;var arrs = sColor.split(reExp); //得到一个数组["red","blue","yellow"]注意逗号在正则表达式有特殊含义,这边需要转义7.2 简单模式(元字符,字符类,量词)元字符11个()[] {} \ ^ $ | ? * + .要匹配字符串中的元字符,需要转义/\^/注意var reMark = new RegExp("\\^");当正则表达式以非字面量的形式表示时,所有的反斜杠"\"都要用两个反斜杠"\\"来替换.因为javascript字符串解析器会按照翻译\n的方式尝试翻译\?.为了保证不会出现这个问题,在元字符的前面加上两个反斜杠,我们称之为双重转义 .(不太懂这个解释,我的理解是\本身也是元字符,先要对它转义得到"\" ,然后再用这个"\"对接下来的元字符转义)预定义的特殊字符\t制表符\n换行符\r回车符\f换页符\a Alert 字符\e Escape 字符\cX与X 相应的控制字符\b回退字符\v垂直制表符\o空字符字符类将一些字符放入方括号中 .1, 简单类var toMatch = "a bat, a cat, a fAt baT, a faT cat";var reg =/[bcf]at/gi;var arrs = toMatch.match(reg); 返回的数组[“bat”, “Cat”, “fAt”, “baT”, “faT”, “cat”]2,负向类可以指定要排除的字符,^ 要在[ ] 里面匹配除了a和b以外的所有字符,那么这个字符类为[^ab] . 脱字符^告诉正则表达式字符不能匹配后面跟着的字符只想获得包含at但不能以b或c开头的字符, /[^bc]at/gi3, 范围类[a-z]匹配所有小写字母结合负向类可以排除给定范围内的所有字符, 例如要排除字符1~4,可以使用类[^1-4]4, 组合类[a-z1-9\n]5, 预定义类代码等同于匹配.[^\n\r]除了换行回车意外的任意字符\d[0-9]数字\D[^0-9]非数字\s[ \t\n\r\x0B\f]空白字符\S[^ \t\n\r\x0B\f]非空白字符\w[a-zA-Z_0-9]单词字符(所有字母,数字和下划线)\W[^a-zA-Z_0-9]非单词字符6, 量词用于指定某个特定模式出现的次数?出现0次或1次*出现0次或多次(任意次)+出现1次或多次(至少出现一次){n}一定出现n次{n,m}至少出现n次但不超过m次{n,}至少出现n次贪婪的,惰性的,支配性的量词贪婪量词先看整个字符串是否匹配,如果没有发现匹配,它去掉该字符串中最后一个字符,并再次尝试.重复这个过程直到发现匹配或者字符串不剩任何字符.结合下面会见到的两个例子, 实际过程可能是这样的:第一步按上面的描述执行, 如果字符串不剩任何字符还是没有找到一个匹配, 那么删除字符串的第一个字符, 重复第一步.惰性量词先看字符串中第一个字符是否匹配.如果单独这个字符还不够,就读入下一个字符,组成两个字符的字符串.如果还是没有发现匹配,惰性量词继续从字符串中添加字符直到发现匹配或者整个字符串都检查过也没有匹配.与贪婪量词的工作方式正好相反.支配量词只尝试匹配整个字符串.如果整个字符串不能产生匹配,不做进一步尝试.(IE不支持,Mozilla把支配量词当做贪婪的)贪婪惰性支配描述????+零次或一次出现**?*+零次或多次出现++?++一次或多次出现{n}{n}?{n}+恰好n次出现{n,m}{n,m}?{n,m}+至少n次之多m次出现{n,}{n,}?{n,}+至少n次出现7.3 复杂模式1, 分组分组是通过一系列括号包围一系列字符,字符类以及量词来使用的./(dog){2}/g匹配dogdog/{[bd]ad?}*/匹配ba, da, bad, dad等去掉开头结尾的空白字符String.prototype.trim = function(){//注意, 分组里面.*?一定要是惰性的,不然这个分组会把最后的空白字符也匹配进去var reExtraStr = /^\s+(.*?)\s+$/ ;return this.replace(reExtraStr,"$1");}2, 反向引用在表达式计算完成之后,每个分组都被存放在一个特殊的地方以备将来使用.这些存储在分组中的特殊值,我们称之为反向引用(backreference).反向引用是按照从左到右遇到的左括号字符的顺序进行创建和编号的.反向引用的几种不同使用方法:* 使用正则表达式对象的test(), exec()方法后,反向引用的值可以从RegExp对象的构造函数中获得var toMarch = "#12345";var regExp = /#(\d*)/;regExp.exec(toMarch);dwr(RegExp.$1);* 还可以直接在定义分组的表达式中包含反向引用,这可以通过使用特殊转义序列如\1 , \2等实现.var toMarch2 = "dogdog";var regExp2 = /(dog)\1/;dwr(regExp2.test(toMarch2));* 反向引用可以用在String对象的replace()方法中var toMarch3 = "123123123 3211231231";var regExp3 = /(\d+)\s*(\d+)/;var sNew = toMarch3.replace(regExp3,"$2 $1 ");//注意replace不改变原来的字符串,而是返回一个替换后的新字符串dwr(sNew);3, 候选用一个管道符(| ),它放在两个单独的模式之间.var toMarch4 = "dog";var toMarch5 = "cat";var regExp4 = /dog|cat/;dwr(regExp4.test(toMarch4));//truedwr(regExp4.test(toMarch5));//trueOR模式的一种通常用法是从用户输入中删除不合适的单词.var userInput = "badWord1asdasdandBadWord2";var toMarch6 = /badword1|badword2/gi;var newStr = userInput.replace(toMarch6, function(march){return march.replace(/./g,"*");});dwr(newStr); //********asdasdand********string.replace(regexp, replacement)replacement既可以是一个替换的字符串,也可以是一个function如果是function的情况, 这个function会为每一个匹配执行一次,这个function的返回值作为最终替换的字符串.传给function的第一个参数是第一个匹配的字符串;第二个参数是匹配字符串在原始字符串中的位置;第三个参数是原始字符串本身.4, 非捕获性分组创建反向引用的分组称为捕获性分组, 非捕获性分组不会创建反向引用.在较长的正则表达式中存储反向引用会降低匹配的速度.要创建非捕获性分组,只要在左括号后面紧跟一个问号和冒号.var str = "#123456";var regE = /#(?: 123456)/;regE.test(str);dwr(RegExp.$1);//""//去除所有的HTML标签String.prototype.skipHTML = function(){var regExp = /<(?:.|\s)*?>/g ;return this.replace(regExp,"");}5, 前瞻表示当某个特定的字符分组出现在另一个字符串之前时才去捕获它.前瞻分正向前瞻和负向前瞻, 正向前瞻检查的是接下来出现的是不是某个特定的字符集. 而负向前瞻则是检查接下来的不应该出现的特定字符集.正向前瞻需要将模式放在(?= 和) 之间,注意这不是分组,虽然它也用到括号. 负向前瞻需要将模式放在(!= 和) 之间.var toMarch1 = "bedroom";var toMarch2 = "bedding";var bedReg = /(bed(?=room))/;dwr(bedReg.test(toMarch1)); //truedwr(bedReg.exec(toMarch1));//bed,bed 因此这个正则表达式返回的第一个匹配是bed,而不是bedroom,但是它只会去匹配后面跟着 room的bed,有点搞dwr(RegExp.$1); //beddwr(bedReg.test(toMarch2)); //false6, 边界边界用于正则表达式中表示模式的位置.^行开头$行结尾\b单词的边界\B非单词的边界查找一个出现在行尾的单词:var toMarch3 = "Important word is the last one.";var regExp3 = /(\w+)\.$/ ;//这边结合上面对贪婪量词的解释,有点不明白为何能匹配one?. regExp3.test(toMarch3);dwr(RegExp.$1);//one查找一个出现在行首的单词:var toMarch4 = "Important word is the last one.";var regExp4 = /^(\w+)/ ; //或者var regExp4 = /^(.+?)\b/;regExp4.test(toMarch4);dwr(RegExp.$1);抽取出所有的单词var toMarch5 = "First Second Third Fourth Fifth Sixth";var regExp5 = /\b(\S+?)\b/g ;//或者 /\b(\S+)\b/g 和 /(\w+)/gvar sArr = toMarch5.match(regExp5);dwr(sArr);//First Second Third Fourth Fifth Sixth注意这边如果用/(\w+?)/g是不行的,这样得到的是一个一个的字母F,i,r,s,t,S...=============================================================== ===========================与上面疑问类似的一个问题例子代码,如下:str = "abbb1234abbbaabbbaaabbb1234";re = /.*bbb/g;alert(str.match(re)); //结果为abbb1234abbbaabbbaaabbbre = /.*?bbb/g;alert(str.match(re)); //结果为abbb,1234abbb,aabbb,aaabbbre = /a*bbb/g;alert(str.match(re)); //结果为abbb,abbb,aabbb,aaabbbre = /a*?bbb/g;alert(str.match(re)); //结果为abbb,abbb,aabbb,aaabbb对于第一、第二和第四个打印结果容易理解:第一个str.match(re),贪婪量词先匹配整个字串,若不匹配去掉一个尾字符,继续匹配;第二个str.match(re),惰性量词从第一个字符开始递加去匹配,直到匹配成功,清空字串,从下一个字符继续匹配。
js常用正则表达式汇总
js常用正则表达式汇总正则表达式是一种强大的文本匹配工具,可以快速有效地从文本中提取和过滤内容。
在JavaScript中,我们可以通过RegExp对象使用正则表达式。
下面是一些常用的JavaScript正则表达式。
1.匹配Email地址邮箱是我们使用网络进行邮件发送的重要工具,因此在验证电子邮件地址方面,正则表达式非常有用。
匹配电子邮件地址的正则表达式如下:/^([a-zA-Z0-9])+@([a-zA-Z0-9])+\.([a-zA-Z])+$/2.匹配URL地址互联网上的链接是重要的导向工具,有时页面需要提供一个URL 地址的快捷方式。
正则表达式可以帮助我们验证URL地址是否合法。
匹配URL地址的正则表达式如下:/^(http|https|ftp):\/\/([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+\.[a-zA-Z]+(\/[a-zA-Z0-9]+)*\/?$/3.验证身份证号码在我们生活中,身份证号码是重要的身份证明和登记工具。
一个正确的身份证号码可以帮助我们确认一个人的身份和信息。
匹配身份证号码的正则表达式如下:/^([0-9]){18}$/4.验证中国邮政编码在我们生活中,邮政编码是我们的信件、包裹等划分区域的唯一标识符。
如果邮政编码不正确,可能会导致邮件被延迟或无法交付。
匹配中国邮政编码的正则表达式如下:/^([1-9][0-9]){5}$/5.验证日期格式日期格式在我们的生活中常常用到。
在网页上,如果我们需要验证用户输入的日期格式是否正确,使用正则表达式可以帮助我们轻松实现。
匹配日期格式的正则表达式如下:/^([1-9][0-9]{3})-([1-9]|1[0-2])-([1-9]|1[0-9]|2[0-9]|3[0-1])$/6.匹配手机号码随着移动设备的普及,手机号码成为人们日常生活、工作中联系的一种重要方式。
匹配中国手机号码的正则表达式如下:/^1[3,4,5,7,8][0-9]{9}$/在JavaScript中,我们通过使用RegExp对象来实现这些正则表达式。
js正则顺口溜
js正则顺口溜正则表达式如此强悍,匹配之道无穷无尽。
一纳百纳三零六,元字符都识得一清二楚。
有点懒的小明哥,用了正则真是妙。
\d匹配数字,\w匹配字母,\s匹配空白喽。
.匹配非换行符,^匹配字符串的开头。
$匹配字符串的结尾,*匹配前面的字符零次或多次。
+匹配前面的字符一次或多次,?匹配前面的字符零次或一次。
{n}匹配前面的字符恰好n次,{n,}匹配前面的字符至少n次。
{n,m}匹配前面的字符至少n次,但不超过m次。
[…]匹配[]中的任意一个字符,[^…]匹配除了[]中的字符之外的任意字符。
(x)匹配x并创建一个保存匹配结果的分组。
(?:x)匹配x但不创建保存匹配结果的分组。
x(?=y)匹配x当x后面跟着y,x(?!y)匹配x当x后面不跟着y。
x|y匹配x或y,{name}匹配名为name的分组。
正则表达式太强大,匹配需权衡重。
[]中的字符别忘记转义,特殊字符得小心用。
分组捕获很有意,(?:)匹配时不保存。
全局匹配用g修饰,多行匹配不用想。
正则就是这样神奇,掌握了它世界任你飞。
匹配、替换、验证友,用JS实现真便利。
正则表达式带来的便捷和灵活性,让我们在处理字符串时事半功倍。
在使用JS正则表达式时,我们需要掌握一些常用的元字符和特殊符号,以便更加高效地进行字符串匹配、替换和验证。
首先,我们要了解一些常用的元字符。
其中,\d用于匹配数字,\w用于匹配字母,\s用于匹配空白字符。
另外,.可以匹配任意非换行符,^用于匹配字符串的开头,$用于匹配字符串的结尾。
*表示匹配前面的字符零次或多次,+表示匹配前面的字符一次或多次,?表示匹配前面的字符零次或一次。
{n}表示匹配前面的字符恰好n次,{n,}表示匹配前面的字符至少n次,{n,m}表示匹配前面的字符至少n次,但不超过m次。
[...]用于匹配括号内的任意一个字符,[^…]用于匹配除了括号内的字符之外的任意字符。
这些元字符可以帮助我们精确地定位和匹配字符串中的内容。
JS正则表达式语法大全(非常详细)
JS正则表达式语法⼤全(⾮常详细)正则表达式是⼀种通⽤的⼯具,在 Script、、Java、、等⼏乎所有的编程语⾔中都能使⽤;但是,不同编程语⾔对正则表达式语法的⽀持不尽相同,有的编程语⾔⽀持所有的语法,有的仅⽀持⼀个⼦集。
本节讲到的正则表达式语法适⽤于 JavaScript。
正则表达式的语法体现在字符模式上。
字符模式是⼀组特殊格式的字符串,它由⼀系列特殊字符和普通字符构成,其中每个特殊字符都包含⼀定的语义和功能。
描述字符根据正则表达式语法规则,⼤部分字符仅能够描述⾃⾝,这些字符被称为普通字符,如所有的字母、数字等。
元字符就是拥有特动功能的特殊字符,⼤部分需要加反斜杠进⾏标识,以便于普通字符进⾏区别,⽽少数元字符,需要加反斜杠,以便转译为普通字符使⽤。
JavaScript 正则表达式⽀持的元字符如表所⽰。
元字符元字符描述.查找单个字符,除了换⾏和⾏结束符\w查找单词字符\W查找⾮单词字符\d查找数字\D查找⾮数字字符\s查找空⽩字符\S查找⾮空⽩字符\b匹配单词边界\B匹配⾮单词边界\0查找 NUL字符\n查找换⾏符\f查找换页符\r查找回车符\t查找制表符\v查找垂直制表符\xxx查找以⼋进制数 xxxx 规定的字符\xdd查找以⼗六进制数 dd 规定的字符\uxxxx查找以⼗六进制 xxxx规定的 Unicode 字符表⽰字符的⽅法有多种,除了可以直接使⽤字符本⾝外,还可以使⽤ ASCII 编码或者 Unicode 编码来表⽰。
⽰例1下⾯使⽤ ASCII 编码定义正则表达式直接量。
1. var r = /\x61/;2. var s = "JavaScript";3. var a = s.match(s);由于字母 a 的 ASCII 编码为 97,被转换为⼗六进制数值后为 61,因此如果要匹配字符 a,就应该在前⾯添加“\x”前缀,以提⽰它为 ASCII 编码。
⽰例2除了⼗六进制外,还可以直接使⽤⼋进制数值表⽰字符。
JS常用正则表达式总结【经典】
JS常⽤正则表达式总结【经典】本⽂实例讲述了JS常⽤正则表达式。
分享给⼤家供⼤家参考,具体如下:在项⽬中个⼈写的⼀个常⽤验证的正则表达式:(仅供参考)//定义两个全局变量var reg;var errorInfo;//输⼊的数字类型必须是int型,正负整数都可以function validate_integer(text,value){reg=/^[-\+]?\d+$/;errorInfo=text+" "+value+" 只能是整数,请核实重新输⼊!";verifyByReg(value,reg,errorInfo);}//输⼊的数字类型必须是double型,保留的⼩数位数只能是2位,可以为正负function validate_double(text,value){reg=/^[-\+]?([1-9](\d+)?|0)(\.\d{2})$/;errorInfo=text+" "+value+" 只能保留2为⼩数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//输⼊的必须是全是数字类型型,不能出现其他字符function validate_number(text,value){reg=/^\d+$/;errorInfo=text+" "+value+" 只能是数字,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证输⼊n位的数值类型function validate_number_n(text,value,n){reg=eval("/^\\d{"+n+"}$/");errorInfo=text+" "+value+" 只能是"+n+"位数字,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证有两位⼩数的正实数function validate_decimal_two(text,value){reg=/^([1-9](\d+)?|0)(.[0-9]{2})?$/;errorInfo=text+" "+value+" 只能是保留2位⼩数的正数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证⾮零的正整数function validate_number_positive(text,value){reg=/^\+?[1-9][0-9]*$/;errorInfo=text+" "+value+" 只能是⾮0的正整数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证⾮零的负整数function validate_number_negative(text,value){reg=/^[-][1-9][0-9]*$/;errorInfo=text+" "+value+" 只能是⾮0的负整数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证⾮负整数,可以为0function validate_positive_haszero(text,value){reg=/^[1-9](\d+)?|0$/;errorInfo=text+" "+value+" 只能是是0或正整数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证⾮正整数,可以为0function validate_negative_haszero(text,value){reg=/^\-[1-9](\d+)?|0$/;errorInfo=text+" "+value+" 只能是是0或负整数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证⾮负浮点数(正浮点数 + 0)function validate_float_notnegative(text,value){reg=/^([1-9](\d+)?|0)(\.\d+)|0$/;errorInfo=text+" "+value+" 只能是是0或正浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证正浮点数function validate_float_positive(text,value){reg=/^([1-9](\d+)?|0)(\.\d+)$/;errorInfo=text+" "+value+" 只能是正浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//⾮正浮点数(负浮点数 + 0)function validate_float_notpositive(text,value){reg=/^\-([1-9](\d+)?|0)(\.\d+)|0$/;errorInfo=text+" "+value+" 只能是是0或者负浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证负浮点数function validate_float_negative(text,value){reg=/^\-([1-9](\d+)?|0)(\.\d+)$/;errorInfo=text+" "+value+" 只能是负浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证正浮点数多少位⼩数function validate_float_posbit(text,value,n){reg=eval("/^(\\d+)(\\.\\d{"+n+"})$/");errorInfo=text+" "+value+" 只能是"+n+"位正浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证负浮点数多少位⼩数function validate_float_negbit(text,value,n){reg=eval("/^(-?\\d+)(\\.\\d{"+n+"})$/");errorInfo=text+" "+value+" 只能是"+n+"位负浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//校验⽂本是否为空function checknull(text,value){if(value=="" || typeof(value)=='undefined'){errorInfo=text+" "+value+" 不能为空,请重新输⼊!";returnInfo(errorInfo);}}//验证由26个英⽂字母组成的字符串function validate_string_letter(text,value){reg=/^[A-Za-z]+$/;errorInfo=text+" "+value+" 只能是26位不区分⼤⼩写的英⽂字母组成,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}//验证由26个英⽂字母的⼤写组成的字符串function validate_string_bigletter(text,value){reg=/^[A-Z]+$/;errorInfo=text+" "+value+" 只能是26位⼤写的英⽂字母组成,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}//验证由26个英⽂字母的⼩写组成的字符串function validate_string_smallletter(text,value){reg=/^[a-z]+$/;errorInfo=text+" "+value+" 只能是26位⼩写的英⽂字母组成,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}//验证由数字和26个英⽂字母组成的字符串function validate_string_number(text,value){reg=/^[A-Za-z0-9]+$/;errorInfo=text+" "+value+" 只能是数字和26个英⽂字母组成,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}//验证由数字、26个英⽂字母或者下划线组成的字符串function validate_string_numberandunderline(text,value){reg=/^\w+$/;errorInfo=text+" "+value+" 只能是数字、26个英⽂字母或者下划线组成,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}//验证邮箱function validate_email(value){reg=/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;errorInfo='邮箱 '+value+" ⽆效,请重新输⼊";verifyByReg(value,reg,errorInfo);}//验证时如果选择默认调⽤此⽅法⾦额类型,可以是正整数或保留4位有效数字的正整数/**有问题function validate_money_default(text,value){var reg=/^\d+(\.\d{4})?$/;var errorInfo=text+" "+value+" 只能是正整数或保留4位有效数字,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}**///验证输⼊的只能是中⽂function validate_chinese(text,value){reg=/^[\u4e00-\u9fa5]+$/;errorInfo=text+" "+value+" 只能是中⽂字符,请重新输⼊";verifyByReg(value,reg,errorInfo);}//验证输⼊的只能是n位的中⽂function validate_bitchinese(text,value,bit){reg=eval("/^[\\u4e00-\\u9fa5]{"+bit+"}$/");alert(reg);errorInfo=text+" "+value+" 只能是"+bit+"位中⽂字符,请重新输⼊";verifyByReg(value,reg,errorInfo);}//跟最⼤的值⽐较,此⽅法是看数字是否超出系统的上限function thanMax(text,number,max){if(number>max){errorInfo=text+" "+number+" 不能⼤于"+max+",请重新输⼊";returnInfo(errorInfo);}}//跟最⼩的值⽐较,此⽅法是看数字是否低于系统的下限function thinMin(text,number,min){if(number<min){errorInfo=text +" "+number+" 不能⼩于"+min+",请重新输⼊";returnInfo(errorInfo);}}//输⼊⽂本的字符串是否在系统的指定长度内function isLimit(text,value,length){var arr=value.split("");if(arr.length>length){errorInfo=text +" "+value+" 字符过长,请输⼊最多"+length+"位字符";returnInfo(errorInfo);}}//邮政编码的验证function validate_zipcode(value){reg=/[1-9]\d{5}(?!\d)/;errorInfo='邮政编码 '+value+" 有误,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//对数值类型的数据进⾏简单的验证和转换,因为在设置的时候没有传⼊这个参数的话就会出现js代码错误,所以应该对数值型的数据进⾏转换//⾮空字符的判定function getZeroByNull(text,value){errorInfo=text+" "+value+" 不能为空,请核实重新输⼊";if(value==null||value==''||value=='undefined'){returnInfo(errorInfo);}}//⾝份证验证,分为了两种,15位和18位function validate_IdCard(value){var size=value.split("");if(size.length==15){reg=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;//15位⾝份证验证errorInfo='位⾝份证号码 '+value+" 有误,请核实重新输⼊";}else if(size.length==18){reg=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/;//18位⾝份证验证errorInfo='位⾝份证号码 '+value+" 有误,请核实重新输⼊";}else{errorInfo="请输⼊合法的⾝份证号码!";returnInfo(errorInfo);}verifyByReg(value,reg,errorInfo);}//每个验证都需要调⽤此⽅法function verifyByReg(value,reg,errorInfo){if(value!=''&®!=''){var regExp = new RegExp(reg);if(!regExp.test(value)){alert(errorInfo);throw errorInfo;}}}//不进过正则表达式验证,只需要返回信息,适合内部调⽤此⽅法function returnInfo(message){alert(message);throw message;}//许可证号⽣产企业的格式:QS 1234 2346 3456 其中空格可有可⽆///经营企业许可证的格式为: 湘010249 但是中国的省会简称可能会有三个字的,所以中⽂可以定义为1-3个function validate_license(value,type){if(type==1){reg=/^[a-zA-Z]{2}[ ]?(\d{4}[ ]?\d{4}[ ]?\d{4})$/;//⽣产企业许可证号errorInfo="⽣产许可证号 "+value+" 有误,请核实重新输⼊!";}else if(type==2){reg=/^[\u4e00-\u9fa5]{1,3}\d{6}$/;errorInfo="经营许可证号 "+value+" 有误,请核实重新输⼊!";}verifyByReg(value,reg,errorInfo);}//传真可以匹配的字符串如:+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999等function validate_fax(value){reg=/^([+]{0,1})?\d{1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;errorInfo="传真 "+value+" 有误,请重新输⼊!";verifyByReg(value,reg,errorInfo);}//电话号码可以输⼊:电话或者⼿机其中⼿机号码可以是(+86)、(86)+号码,也可以是号码电话的号码可以是区号+号码区号-号码号码function validate_tel(value){reg=/(^(0\d{2,3}([-|+])?)?\d{7}$)|(^(\d{3,4}([-|+])?)?\d{7,8}$)|(^([+]?(86)?[+]?)1[3-9]\d{9}$)/;errorInfo='电话号码 '+value+" 有误,请核实重新输⼊!";verifyByReg(value,reg,errorInfo);}//⽇:⼤于0⼩于等于31的正整数function validate_day(value){reg=/(^[0]?[1-9]$)|(^[1-2]\d$)|(^[3][0-1]$)/;errorInfo='⽇期 '+value+" 有误,请核实重新输⼊!";verifyByReg(value,reg,errorInfo);}//⽉:合法⽉份function validate_month(value){reg=/(^[0]?[1-9]$)|(^[1][0-2]$)/;errorInfo='⽉份 '+value+" 有误,请核实重新输⼊!";verifyByReg(value,reg,errorInfo);}//年:合法年份在这⾥合法的年份为公元1000年⾄公元2999年function validate_year(value){reg=/^[1-2]\d{3}$/;errorInfo='年份 '+value+" 有误,请核实重新输⼊!";verifyByReg(value,reg,errorInfo);}//百分⽐:合法百分⽐(0-100之前的数字)function validate_percentage(text,value){reg=/(^[1-9](\d)?(\.\d+)?$)|(^0(\.\d+)?$)|(^100$)/;errorInfo=text +" "+value+" 有误,请输⼊0到100的数字!";verifyByReg(value,reg,errorInfo);}//系数:⼩于等于1的正数在这⾥系数的⼩数点后⾯也是2位function validate_modulus(text,value){reg=/^[0](\.\d{2})$|^[1](\.[0]{2})?$/;errorInfo=text+" "+value+" 有误,请输⼊⼩于0到1的数字!";verifyByReg(value,reg,errorInfo);}//验证⾮负的正数,包含了正整数和正浮点数function validate_posnumhaszero(text,value){checknull(text,value);reg=/^[1-9](\d+)?(\.\d+)?$|^0(\.\d+)?$/;errorInfo=text+" "+value+" 有误,请输⼊⼤于或等于0 的数字!";verifyByReg(value,reg,errorInfo);}//验证⾮正的负数,包含了负整数和负浮点数function validate_negnumhaszero(text,value){checknull(text,value);reg=/^[-][1-9](\d+)?(\.\d+)?$|^[-]0(\.\d+)?$/;errorInfo=text+" "+value+" 有误,请输⼊⼩于或等于0 的数字!";verifyByReg(value,reg,errorInfo);}//验证正数,包含了正整数和正浮点数function validate_posnum(text,value){checknull(text,value);reg=/^[1-9](\d+)?(\.\d+)?$|^0(\.\d+)$/;errorInfo=text+" "+value+" 有误,请输⼊⼤于0 的数字!";verifyByReg(value,reg,errorInfo);}//验证负数,包含了负整数和负浮点数function validate_negnum(text,value){checknull(text,value);reg=/^[-][1-9](\d+)?(\.\d+)?$|^[-]0(\.\d+)$/;errorInfo=text+" "+value+" 有误,请输⼊⼩于0 的数字!";verifyByReg(value,reg,errorInfo);}//验证数,包括所有的数值,正数、负数、正浮点数、负浮点数function validate_allnum(text,value){checknull(text,value);reg=/^[-|+]?[1-9](\d+)?(\.\d+)?$|^[-|+]?0(\.\d+)?$/;errorInfo=text+" "+value+" 有误,请输⼊数字!";verifyByReg(value,reg,errorInfo);}PS:这⾥再为⼤家提供2款⾮常⽅便的正则表达式⼯具供⼤家参考使⽤:更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家JavaScript程序设计有所帮助。
15个常用的javaScript正则表达式(收藏)
15个常⽤的javaScript正则表达式(收藏)1 ⽤户名正则//⽤户名正则,4到16位(字母,数字,下划线,减号)var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;//输出 trueconsole.log(uPattern.test("iFat3"));2 密码强度正则//密码强度正则,最少6位,包括⾄少1个⼤写字母,1个⼩写字母,1个数字,1个特殊字符var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;//输出 trueconsole.log("=="+pPattern.test("iFat3#"));3 整数正则//正整数正则var posPattern = /^\d+$/;//负整数正则var negPattern = /^-\d+$/;//整数正则var intPattern = /^-?\d+$/;//输出 trueconsole.log(posPattern.test("42"));//输出 trueconsole.log(negPattern.test("-42"));//输出 trueconsole.log(intPattern.test("-42"));4 数字正则可以是整数也可以是浮点数//正数正则var posPattern = /^\d*\.?\d+$/;//负数正则var negPattern = /^-\d*\.?\d+$/;//数字正则var numPattern = /^-?\d*\.?\d+$/;console.log(posPattern.test("42.2"));console.log(negPattern.test("-42.2"));console.log(numPattern.test("-42.2"));5 Email正则//Email正则var ePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;//输出 trueconsole.log(ePattern.test(65974040@));6 ⼿机号码正则//⼿机号正则var mPattern = /^[1][3][0-9]{9}$/;//输出 trueconsole.log(mPattern.test("139********"));7 ⾝份证号正则//⾝份证号(18位)正则var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;//输出 trueconsole.log(cP.test("110105************"));8 URL正则//URL正则var urlP= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;//输出 trueconsole.log(urlP.test());9 IPv4地址正则//ipv4地址正则var ipP = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;//输出 trueconsole.log(ipP.test("115.28.47.26"));10 ⼗六进制颜⾊正则//RGB Hex颜⾊正则var cPattern = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;//输出 trueconsole.log(cPattern.test("#b8b8b8"));11 ⽇期正则//⽇期正则,简单判定,未做⽉份及⽇期的判定var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;//输出 trueconsole.log(dP1.test("2017-05-11"));//输出 trueconsole.log(dP1.test("2017-15-11"));//⽇期正则,复杂判定var dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/; //输出 trueconsole.log(dP2.test("2017-02-11"));//输出 falseconsole.log(dP2.test("2017-15-11"));//输出 falseconsole.log(dP2.test("2017-02-29"));12 QQ号码正则//QQ号正则,5⾄11位var qqPattern = /^[1-9][0-9]{4,10}$/;//输出 trueconsole.log(qqPattern.test("65974040"));13 微信号正则//微信号正则,6⾄20位,以字母开头,字母,数字,减号,下划线var wxPattern = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;//输出 trueconsole.log(wxPattern.test("RuilongMao"));14 车牌号正则//车牌号正则var cPattern = /^[京津沪渝冀豫云辽⿊湘皖鲁新苏浙赣鄂桂⽢晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;//输出 trueconsole.log(cPattern.test("京K39006"));15 包含中⽂正则//包含中⽂正则var cnPattern = /[\u4E00-\u9FA5]/;//输出 trueconsole.log(cnPattern.test("42度"));推荐阅读:以上所述是⼩编给⼤家介绍的15个常⽤的javaScript正则表达式(收藏),希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
经常用到的javaScript正则表达式(收藏版)
在b/s开发中经常用到的javaScript一、验证类1、数字验证内1.1 整数1.2 大于0的整数(用于传来的ID的验证)1.3 负整数的验证1.4 整数不能大于iMax1.5 整数不能小于iMin2、时间类2.1 短时间,形如(13:04:06)2.2 短日期,形如(2003-12-05)2.3 长时间,形如(2003-12-05 13:04:06)2.4 只有年和月。
形如(2003-05,或者2003-5)2.5 只有小时和分钟,形如(12:03)3、表单类3.1 所有的表单的值都不能为空3.2 多行文本框的值不能为空。
3.3 多行文本框的值不能超过sMaxStrleng3.4 多行文本框的值不能少于sMixStrleng3.5 判断单选框是否选择。
3.6 判断复选框是否选择.3.7 复选框的全选,多选,全不选,反选3.8 文件上传过程中判断文件类型4、字符类4.1 判断字符全部由a-Z或者是A-Z的字字母组成4.2 判断字符由字母和数字组成。
4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母4.4 字符串替换函数.Replace();5、浏览器类5.1 判断浏览器的类型5.2 判断ie的版本5.3 判断客户端的分辨率6、结合类6.1 email的判断。
6.2 手机号码的验证6.3 身份证的验证二、功能类1、时间与相关控件类1.1 日历1.2 时间控件1.4 显示动态显示时钟效果(文本,如OA中时间)1.5 显示动态显示时钟效果(图像,像手表)2、表单类2.1 自动生成表单2.2 动态添加,修改,删除下拉框中的元素2.3 可以输入内容的下拉框2.4 多行文本框中只能输入iMax文字。
如果多输入了,自动减少到iMax个文字(多用于短信发送)3、打印类3.1 打印控件4、事件类4.1 屏蔽右键4.2 屏蔽所有功能键4.3 --> 和<-- F5 F11,F9,F14.4 屏蔽组合键ctrl+N5、网页设计类5.1 连续滚动的文字,图片(注意是连续的,两段文字和图片中没有空白出现)5.2 html编辑控件类5.3 颜色选取框控件5.4 下拉菜单5.5 两层或多层次的下拉菜单5.6 仿IE菜单的按钮。
JS常用正则表达式
JS常⽤正则表达式JS常⽤正则表达式⼀常⽤正则\ :将下⼀个字符标记为⼀个特殊字符、或⼀个原义字符、或⼀个向后引⽤、或⼀个⼋进制转义符。
例如:"\d" 匹配数字字符,⽽不是匹配字母d。
^ :匹配输⼊的开始位置。
如果多⾏标志被设置为 true,那么也匹配换⾏符后紧跟的位置。
例如:/^A/ 并不会匹配 "an A" 中的 'A',但是会匹配 "An E" 中的 'A'。
$ :匹配输⼊的结束位置。
如果多⾏标志被设置为 true,那么也匹配换⾏符前的位置。
例如:/t$/ 并不会匹配 "eater" 中的 't',但是会匹配 "eat" 中的 't'。
* :匹配⼀个表达式 0 次或多次,等价于 {0, }。
例如:/bo*/ 会匹配 "A ghost boooooed" 中的 'booooo' 和 "A bird warbled" 中的 'b',但是在 "A goat grunted" 中不会匹配任何内容。
+ :匹配前⾯⼀个表达式 1 次或多次,等价于{1, }。
例如:/a+/ 会匹配 "candy" 中的 'a' 和 "caaaaaaandy" 中所有的 'a',但是在 "cndy" 中不会匹配任何内容。
:匹配前⾯⼀个表达式 0 次或 1 次,等价于{0, 1}。
例如:/e?le?/ 匹配 "angel" 中的 'el'、"angle" 中的 'le' 以及 "oslo' 中的 'l'。
经典 Javascript 正则表达式
正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。
我将一些常用的表达式收藏在这里,作备忘之用。
匹配中文字符的正则表达式:[\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,"aa").length; }匹配空行的正则表达式:\n[\s|]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/匹配首尾空格的正则表达式:(^\s*)|(\s*$)应用:j avascript中没有像v bscript那样的trim函数,我们就可以利用这个表达式来实现,如下:String.prototype.trim = function(){return this.replace(/(^\s*)|(\s*$)/g, "");}利用正则表达式分解和转换IP地址下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:function IP2V(ip){re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g//匹配IP地址的正则表达式if(re.test(ip)){returnRegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*2 55+RegExp.$4*1}else{throw new Error("Not a valid IP address!")}}不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:var ip="10.100.20.168"ip=ip.split(".")alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?利用正则表达式去除字串中重复的字符的算法程序:[*注:此程序不正确]var s="abacabefgeeii"var s1=s.replace(/(.).*\1/g,"$1")var re=new RegExp("["+s1+"]","g")var s2=s.replace(re,"")alert(s1+s2)//结果为:abcefgi*注===============================如果var s = “abacabefggeeii”结果就不对了,结果为:abeicfgg正则表达式的能力有限===============================我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。
JavaScript正则表达式大全
在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”
验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
只能包含字符、数字和下划线。
验证是否含有^%&',;=?$"等字符:“[^%&',;=?$x22]+”
只能输入非零的正整数:“^+?[1-9][0-9]*$”
只能输入非零的负整数:“^-[1-9][0-9]*$”
只能输入长度为3的字符:“^.{3}$”
只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
用正则表达式限制只能输入全角字符: onkeyup="value="/blog/value.replace(/["^uFF00-uFFFF]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"
js常用正则表达式大全--如:数字,字符等
js常⽤正则表达式⼤全--如:数字,字符等⼀、校验数字的表达式1 数字:^[0-9]*$2 n位的数字:^\d{n}$3 ⾄少n位的数字:^\d{n,}$4 m-n位的数字:^\d{m,n}$5 零和⾮零开头的数字:^(0|[1-9][0-9]*)$6 ⾮零开头的最多带两位⼩数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$7 带1-2位⼩数的正数或负数:^(\-)?\d+(\.\d{1,2})?$8 正数、负数、和⼩数:^(\-|\+)?\d+(\.\d+)?$9 有两位⼩数的正实数:^[0-9]+(.[0-9]{2})?$10 有1~3位⼩数的正实数:^[0-9]+(.[0-9]{1,3})?$11 ⾮零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$12 ⾮零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$13 ⾮负整数:^\d+$ 或 ^[1-9]\d*|0$14 ⾮正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$15 ⾮负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$16 ⾮正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$17 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$18 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$19 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$⼆、校验字符的表达式1 汉字:^[\u4e00-\u9fa5]{0,}$2 英⽂和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$3 长度为3-20的所有字符:^.{3,20}$4 由26个英⽂字母组成的字符串:^[A-Za-z]+$5 由26个⼤写英⽂字母组成的字符串:^[A-Z]+$6 由26个⼩写英⽂字母组成的字符串:^[a-z]+$7 由数字和26个英⽂字母组成的字符串:^[A-Za-z0-9]+$8 由数字、26个英⽂字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$9 中⽂、英⽂、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$10 中⽂、英⽂、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$11 可以输⼊含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+12 禁⽌输⼊含有~的字符:[^~\x22]+三、特殊需求表达式1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$4 ⼿机号码:^(13[0-9]|14[0-9]|15[0-9]|166|17[0-9]|18[0-9]|19[8|9])\d{8}$4.1 var re = /^(1[3-9][0-9]{9})$/;//如:if (re.test(vmData.PHONE) === false) {alert("⼿机号格式不正确");return;}5 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$6 国内电话号码(0511-*******、021-********):\d{3}-\d{8}|\d{4}-\d{7}7 18位⾝份证号码(数字、字母x结尾):^((\d{18})|([0-9x]{18})|([0-9X]{18}))$8 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$9 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$10 强密码(必须包含⼤⼩写字母和数字的组合,不能使⽤特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$11 ⽇期格式:^\d{4}-\d{1,2}-\d{1,2}12 ⼀年的12个⽉(01~09和1~12):^(0?[1-9]|1[0-2])$13 ⼀个⽉的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$14 钱的输⼊格式:15 1.有四种钱的表⽰形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$16 2.这表⽰任意⼀个不以0开头的数字,但是,这也意味着⼀个字符"0"不通过,所以我们采⽤下⾯的形式:^(0|[1-9][0-9]*)$17 3.⼀个0或者⼀个不以0开头的数字.我们还可以允许开头有⼀个负号:^(0|-?[1-9][0-9]*)$18 4.这表⽰⼀个0或者⼀个可能为负的开头不为0的数字.让⽤户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下⾯我们要加的是说明可能的⼩数部分:^[0-9]+(.[0-9]+)?$19 5.必须说明的是,⼩数点后⾯⾄少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$20 6.这样我们规定⼩数点后⾯必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$21 7.这样就允许⽤户只写⼀位⼩数.下⾯我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$22 8.1到3个数字,后⾯跟着任意个逗号+3个数字,逗号成为可选,⽽不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$23 备注:这就是最终结果了,别忘了"+"可以⽤"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在⽤函数时去掉去掉那个反斜杠,⼀般的错误都在这⾥24 xml⽂件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$25 中⽂字符的正则表达式:[\u4e00-\u9fa5]26 双字节字符:[^\x00-\xff] (包括汉字在内,可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1))27 空⽩⾏的正则表达式:\n\s*\r (可以⽤来删除空⽩⾏)28 HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (⽹上流传的版本太糟糕,上⾯这个也仅仅能部分,对于复杂的嵌套标记依旧⽆能为⼒)29 ⾸尾空⽩字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式)30 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)31 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)32 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有⽤)33 IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)) (由@飞龙三少提供,感谢共享)转载⾃:作者:出处:本⽂版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在⽂章页⾯明显位置给出原⽂连接,否则保留追究法律责任的权利。
js常用15个正则表达式
js常用15个正则表达式在JavaScript编程中,正则表达式是一种强大且常用的工具,用于处理字符串的模式匹配和替换。
本文将介绍JavaScript常用的15个正则表达式,并逐步回答相关问题,以帮助读者更好地理解和应用正则表达式。
1. 什么是正则表达式?正则表达式是一种用于匹配、查找和替换字符串的模式。
它由一个或多个字符组成,可以包含特殊字符和普通字符,并且可以通过一系列规则来定义匹配的模式。
2. 如何创建正则表达式?正则表达式可以使用两种方式来创建:- 字面量方式:使用斜杠(/)将模式括起来,例如:/pattern/- 构造函数方式:使用RegExp对象的构造函数来创建正则表达式,例如:new RegExp("pattern")3. 如何检测字符串是否与正则表达式匹配?JavaScript中的正则表达式对象提供了test()方法,用于检测一个字符串是否与正则表达式匹配。
例如:let pattern = /abc/;let str = "abcdefg";console.log(pattern.test(str)); true4. 如何匹配一个单词的开头或结尾?正则表达式中的元字符^和分别用于匹配字符串的开头和结尾。
例如:let pattern = /^abc/; 匹配以abc开头的字符串let pattern2 = /xyz/; 匹配以xyz结尾的字符串5. 如何匹配多个字符中的任意一个?正则表达式使用方括号([])来匹配多个字符中的任意一个。
例如:let pattern = /[abc]/; 匹配a、b或c6. 如何匹配一个或多个重复字符?正则表达式中的元字符+用于匹配前一个字符出现一次或多次。
例如:let pattern = /a+/; 匹配一个或多个连续的a7. 如何匹配0个或多个重复字符?正则表达式中的元字符*用于匹配前一个字符出现零次或多次。
js 密码强度正则表达式
js 密码强度正则表达式
密码强度正则表达式是用来验证密码是否符合一定的强度要求
的模式。
密码强度正则表达式通常包括对密码长度、包含大写字母、小写字母、数字、特殊字符等要求的检查。
下面是一个简单的密码
强度正则表达式的示例:
^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[@$!%?&])[A-Za-
z\d@$!%?&]{8,}$。
这个正则表达式的含义是:
(?=.[a-z]),至少包含一个小写字母。
(?=.[A-Z]),至少包含一个大写字母。
(?=.\d),至少包含一个数字。
(?=.[@$!%?&]),至少包含一个特殊字符。
[A-Za-z\d@$!%?&]{8,},密码长度至少为8个字符,且只能包
含大小写字母、数字和特殊字符@$!%?&。
这个正则表达式要求密码长度至少为8个字符,且必须包含大小写字母、数字和特殊字符中的至少一个。
这样的正则表达式可以用来验证密码的强度,确保用户设置的密码符合一定的安全标准。
当然,根据实际需求,密码强度正则表达式可能会有所不同。
例如,有些网站可能对密码的特殊字符有特定的要求,或者对密码长度有更严格的限制。
因此,开发人员在设计密码强度正则表达式时需要根据实际情况进行调整,以满足特定的密码安全要求。
100至5000正则js表达式
100至5000正则js表达式
正则表达式是一种用来匹配字符串模式的工具,可以用于验证、搜索或替换字符串。
在JavaScript中,可以使用正则表达式来进行
字符串操作。
下面是一个匹配长度为3到4位数字的正则表达式:
javascript.
/^\d{3,4}$/。
解释一下这个正则表达式:
`^` 表示匹配字符串的开头。
`\d` 表示匹配任意数字。
`{3,4}` 表示前面的数字可以重复3到4次。
`$` 表示匹配字符串的结尾。
这个正则表达式可以用来验证一个字符串是否由3到4位数字
组成。
如果你需要匹配100至5000之间的数字,可以使用以下正则表达式:
javascript.
/^(100|[1-9]\d{2,3}|5000)$/。
解释一下这个正则表达式:
`^` 表示匹配字符串的开头。
`100` 匹配数字100。
`|` 表示或者。
`[1-9]` 匹配1到9之间的数字。
`\d{2,3}` 匹配2到3位数字。
`5000` 匹配数字5000。
`$` 表示匹配字符串的结尾。
这个正则表达式可以用来验证一个字符串是否为100至5000之间的数字。
希望以上的解释能够帮助你理解如何使用正则表达式来匹配特定范围内的数字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ne_wf_Validator = {Require : /.+/,Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,Phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,8}(\-\d{1,5})?$/, Mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/, IdCard : "this.IsIdCard(value)",Currency : /^\d+(\.\d+)?$/,Number : /^\d+$/,Zip : /^[1-9]\d{5}$/,QQ : /^[1-9]\d{4,8}$/,Integer : /^[-\+]?\d+$/,Double : /^[-\+]?\d+(\.\d+)?$/,English : /^[A-Za-z]+$/,Chinese : /^[\u0391-\uFFE5]+$/,Username : /^[a-z]\w{3,}$/i,UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/ ,IsSafe : function(str){return !this.UnSafe.test(str);},SafeString : "this.IsSafe(value)",Filter : "this.DoFilter(value, getAttribute('accept'))",Limit : "this.limit(value.length,getAttribute('min'), getAttribute('max'))", LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))", Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))", Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value", Range : "getAttribute('min') < (value|0) && (value|0) < getAttribute('max')", Compare : "pare(value,getAttribute('operator'),getAttribute('to'))", Custom : "this.Exec(value, getAttribute('regexp'))",Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",ErrorItem : [document.forms[0]],ErrorMessage : ["以下原因导致提交失败:\t\t\t\t"],Validate : function(theForm, mode){var obj = theForm || event.srcElement;var count = obj.elements.length;this.ErrorMessage.length = 1;this.ErrorItem.length = 1;this.ErrorItem[0] = obj;for(var i=0;i<count;i++){with(obj.elements[i]){var _dataType = getAttribute("dataType");if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined") continue;this.ClearState(obj.elements[i]);if(getAttribute("require") == "false" && value == "") continue;switch(_dataType){case "IdCard" :case "Date" :case "Repeat" :case "Range" :case "Compare" :case "Custom" :case "Group" :case "Limit" :case "LimitB" :case "SafeString" :case "Filter" :if(!eval(this[_dataType])) {this.AddError(i, getAttribute("msg"));}break;default :if(!this[_dataType].test(value)){this.AddError(i, getAttribute("msg"));}break;}}}if(this.ErrorMessage.length > 1){mode = mode || 1;var errCount = this.ErrorItem.length;switch(mode){case 2 :for(var i=1;i<errCount;i++)this.ErrorItem[i].style.color = "red";case 1 :alert(this.ErrorMessage.join("\n"));try{if(this.ErrorItem[1].type!="hidden")this.ErrorItem[1].focus();}catch(e){}break;case 3 :for(var i=1;i<errCount;i++){try{var span = document.createElement("SPAN");span.id = "__ErrorMessagePanel";span.style.color = "red";this.ErrorItem[i].parentNode.appendChild(span);span.innerHTML = this.ErrorMessage[i].replace(/\d+:/,"*");}catch(e){alert(e.description);}}try{if(this.ErrorItem[1].type!="hidden")this.ErrorItem[1].focus();}catch(e){}break;default :alert(this.ErrorMessage.join("\n"));break;}return false;}return true;},limit : function(len,min, max){min = min || 0;max = max || Number.MAX_VALUE;return min <= len && len <= max;},LenB : function(str){return str.replace(/[^\x00-\xff]/g,"**").length;},ClearState : function(elem){with(elem){if(style.color == "red")style.color = "";var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];if(lastNode.id == "__ErrorMessagePanel")parentNode.removeChild(lastNode);}},AddError : function(index, str){this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str; },Exec : function(op, reg){return new RegExp(reg,"g").test(op);},compare : function(op1,operator,op2){switch (operator) {case "NotEqual":return (op1 != op2);case "GreaterThan":return (op1 > op2);case "GreaterThanEqual":return (op1 >= op2);case "LessThan":return (op1 < op2);case "LessThanEqual":return (op1 <= op2);default:return (op1 == op2);}},MustChecked : function(name, min, max){var groups = document.getElementsByName(name);var hasChecked = 0;min = min || 1;max = max || groups.length;for(var i=groups.length-1;i>=0;i--)if(groups[i].checked) hasChecked++;return min <= hasChecked && hasChecked <= max;},DoFilter : function(input, filter){return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, filter.split(/\s*,\s*/).join("|")), "gi").test(input);},IsIdCard : function(number){var date, Ai;var verify = "10x98765432";var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];var area = ['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','江西','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2} )(\d{3}[x\d])))$/i);if(re == null) return false;if(re[1] >= area.length || area[re[1]] == "") return false;if(re[2].length == 12){Ai = number.substr(0, 17);date = [re[9], re[10], re[11]].join("-");}else{Ai = number.substr(0, 6) + "19" + number.substr(6);date = ["19" + re[4], re[5], re[6]].join("-");}if(!this.IsDate(date, "ymd")) return false;var sum = 0;for(var i = 0;i<=16;i++){sum += Ai.charAt(i) * Wi[i];}Ai += verify.charAt(sum%11);return (number.length ==15 || number.length == 18 && number == Ai);},IsDate : function(op, formatString){formatString = formatString || "ymd";var m, year, month, day;switch(formatString){case "ymd" :m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$")); if(m == null ) return false;day = m[6];month = m[5]*1;year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));break;case "dmy" :m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$")); if(m == null ) return false;day = m[1];month = m[3]*1;year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));break;default :break;}if(!parseInt(month)) return false;month = month==0 ?12:month;var date = new Date(year, month-1, day);return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;} }}。