正则表达式 定义 正则表达式是一种描述字符串数据模式的方法，是检查、处理字符串的强力工具。 创建正则表达式 var re1 = new RegExp(“abc”); var re2 = /abc/; 使用构造函数创建时，反斜杠的使用规则与往常相同。 使用双斜杠字面值创建时，不确定字符是否具有特殊含义，而不是字母、数字、空格式，只要在字符前加上反斜杠即可。 匹配测试 test方法 接受用户传递的字符串，并返回一个布尔值，表示字符串中是否包含能与表达式模式匹配的字符串。 var re2 = /abc/; console.log(re2.test('abcde')); // > true console.log(re2.test('abxde')); // > false exec方法 如果无法匹配模式则返回null,否则返回一个表示匹配字符串信息的对象。 exec方法返回的对象中包含index属性，表示字符串成功匹配的起始位置。 var re2 = /abc/; console.log(re2.exec('abcde')); // > ["abc", index: 0, input: "abcde"] console.log(re2.exec('abxde')); // > null 若正则表达式中包含圆括号的子表达式分组，与这些分组匹配的文本也会出现在数组中。 第一个元素是与整个模式匹配的字符串， 其后是与第一个分组匹配的部分字符串，然后是第二个分组如此类推。 var dataTimeRE = /(\d{1,2})-(\d{1,2})-(\d{4})/; var str = '24-8-2016'; var match = dataTimeRE.exec(str); console.log(match); // > ["24-8-2016", "24", "8", "2016", index: 0, input: "24-8-2016”] 字符组快捷写法 \d －－数字符号 \w －－字母和数字符号 \s －－空白符号（空格，制表符，换行符等） \D －－非数字符号 \W －－非字母和数字符号 \S －－非空白符号 . －－除了换行符以外的任意符号部分模式重复 ＋ －－该元素至少重复一次 ＊ －－该元素至少重复一次，同时可以匹配模式不存在的情况 ？ －－可选，模式出现0次或1次 { } －－指明模式出现的次数。{4},4次。{2,4},2~4次。{,4},0~4次。{4.},至少4次以上。边界 ^ －－字符始位置 $ －－字符结束位置 \b －－单词边界（ \w 集合） /^\d+$/：匹配一个或者多个数字组成的字符串。 /^!/ ：匹配任何以感叹号开头的字符串。 /x^/ ：不匹配任何字符串。 子表达式分组 如果一次性相想对多个元素使用＊或者＋，那么就需要使用分组。 var strRE = /boo+(hoo+)+/i; var str = 'Booooohooooohoohoooo'; var test = strRE.test(str); console.log(test); // > true 选项模式 管道符号（｜），表示从其左侧的模式和右侧的模式任意选择一个进行匹配。 var animalCount = /\b\d+ (pig|cow|chicken)s?\b/; console.log(animalCount.test("15 cows")); // > true 用例 检查手机号码 function isMobile(tel){ return /^((\(\d{2,3}\))|(\d{3}\-))?(1[34578]\d{9})$/.test(tel); } 获取URL的Query参数 function getQuery(name) { var result = location.search.match(new RegExp("[\?\&]" + name+ "=([^\&]+)","i")); if(result == null || result.length < 1){ return ""; } return result[1]; } 拆分host后缀 function domainarr(url){ var durl = /http:\/\/([^\/]+)\//i; var hosts = url.match(durl); var d_arr; hosts = hosts[1]; d_arr = hosts.split('.'); return d_arr; }