正则元字符详细解读

^ $

var reg = /d+/; //=>包含某某某即可,这里说明包含1到多个数字即可
var str = '我的2017兜兜有糖2018';
reg.test(str) =>true

reg=/^d+/;
reg.test(str) =>false

reg=/^d+$/;//=>只能是某某某的,这里说明只能是1到多个数字
reg.test('2017'); =>true
reg.test('2017兜兜有糖2018'); =>false
reg.test('2'); =>true ^或者$只是一个修饰或者声明,不会占据字符串的位置


斜杠

var reg = /^2.3$/;
reg.test('2.3'); =>true
reg.test('2+3'); =>true 点在正则中的意思:匹配除了
以外的任意字符,而不是单纯的小数点

reg = /^2斜杠.3$/;
reg.test('2.3'); =>true
reg.test('2+3'); =>false 使用转义字符把点转换为本身小数点的意思


x|y

var reg = /^18|19$/;//=>18 19 189 119 819 181 1819 ... 很多都符合这个规则
/*
 * 18或者19
 * 以1开头 以9结尾 中间是8或者1 
 * 以18开头或者以19结尾即可  =>'18兜兜有糖' '兜兜有糖19'...
 */

var reg = /^(18|19)$/;//=>此时只有18或者19符合我们的规则了


():正则中的分组,也可以理解为一个大正则中的一个正则(包起来的部分是一个整体);在正则中我们可以使用小括号改变一些默认的优先级;

小分组还有第二个作用:分组引用 

小分组的第三个作用:分组捕获

//=>分组引用:1 或者 2 ...出现和第N个分组一模一样的内容
var reg = /^([a-z])([a-z])2([a-z])$/; //=> 符合的字符串:foot、book、week、attr、http...


[] : [xyz] [^xyz] [a-z] [^a-z]

//=>w:数组字母下划线中的任意一个字符
var reg = /^[a-zA-Z0-9_]$/; //=>等价于w

//=>中括号中出现的元字符,一般都代表本身的含义
var reg = /^[.?+&]+$/; //=>里面的四个元字符都是本身含义,例如:点就是小数点了,不是所谓的任意字符...

//=>需求:描述样式类名的规则(数字、字母、下划线、-),并且不能以-开头
//var reg = /^[w-]+$/;
//var reg = /^[0-9a-zA-Z_-]+$/; //=>没有处理以-开头的情况
var reg = /^w[w-]*$/;
//=>需求:验证18~65之间的年龄
//var reg = /^[18-65]$/; //=>1或者8~6或者5中的任意一个字符,中括号中出现的18不是数字18,
而是1或者8,当前正则是非法的:因为不能设置8~6这种范围

//=>分三个阶段处理:
// 18 或者 19   /(18|19)/
// 20 ~ 59     /([2-5]d)/
// 60 ~ 65     /(6[0-5])/
var reg = /^((18|19)|([2-5]d)|(6[0-5]))$/;