正则元字符
每一个正则表达式都是由元字符和修饰符组成的
元字符:
指在//之间具有意义的一些字符
1. 具有特殊意义的元字符
\:转义字符,转义后面字符所代表的含义
^:以某一个元字符开始
$:以某一个元字符结尾
\n:匹配一个换行符
.:除了\n以外的任意字符
():分组
x|y:x或y中的一个
[xyz]:x或y或z中的一个
[^xyz]: 除了xyz以外的任意一个字符
[a-z]:a-z之间的任意一个字符
[^a-z]:除了a-z之间的任何一个字符
\d: 一个0-9之间的数字
\D:除了0-9之间的数字以外的任何字符
\b:匹配一个边界符
\w:数字、字母、下划线中的任意一个字符 等同于 [0-9a-zA-Z_]
\s:匹配一个空白字符 空格、一个制表符、换页符
var reg = /^0.2$/; // 以0开头,以2结尾,中间是除了\n 的任意字符
console.log(reg.test('0.2')); // true
reg.test('0\n2'); -> false
reg = /^0\.2$/; // 匹配0.2
var reg = /^(\d+)pku(\d+)$/; //2016pku2017
console.log(reg.test('2016pku2017'));
2. 代表出现次数的量词元字符
*:出现0到多次
+: 出现1到多次
?: 出现0或1次
{n}:出现n次
{n,}:出现n到多次
{n,m}:出现n到m次
var reg = /^\d+$/; // 1到多次
console.log(reg.test('2017'));
元字符应用
规律
1. 在中括号[]中出现的所有的字符都是代表本身意思(没有特殊的含义)
var reg = /^[.]$/;
console.log(reg.test('1')); // false
console.log(reg.test('.')); // true
2.分组的作用:改变x|y的默认优先级
reg = /^18|19$/; // 18, 19, 181, 119... 只要首位是18或末尾是19都符合
reg = /^(18|19)$/; // 只匹配18或19
正则实例
写一个验证有效数字的正则
1. 开头可以有+/-
reg = /^[+-]?$/;
2. 整数部分,一位数可以是0-9之间的一个,多位不能以0开头
reg = /^(\d|([1-9]\d+))$/;
3. “.”可以出现也可以不出现,若出现,后面必须跟着一位或多位数字
reg = /^(\.\d+)?$/;
整合后:
reg = /^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;