38.正则的元字符和一些简单的应用
每一个正则表达式都是由元字符和修饰符组成的
1.元字符:在//之间具有意义的一些字符
1)具有特殊意义的元字符
a)\:转义字符,转译后面字符所代表的含义
b)^:以某一个元字符开始
c)$:以某一个元字符结尾
var reg = /\d/; // 包含一个0-9之间的数字 console.log(reg.test(""zhufeng2015)) var reg = /^\d$/; //只能是一个0-9之间的数字 console.log(reg.test("0")) // true console.log(reg.test("012")) // false var reg = /^\d\d\d$/; //只能是三个0-9之间的数字
d)\n:匹配一个换行符
e).:除了\n以外的任意字符
var reg = /^0.2$/; // ->以0开头,以2结尾,中间可以是除了\n的任何字符 console.log(reg.test("0.2")); // ->true console.log(reg.test("0-2")); // ->true var reg = /^0\.2$/; // ->只能是0.2 console.log(reg.test("0.2")); // ->true console.log(reg.test("0-2")); // ->false
f)():分组->把一个大正则本身划分成几个小的正则
var reg = /^(\d+)zhangsan(\d+)$/ // 2015zhangsan2014 true
g)(?:):分组
h)x|y:x或者y中的一个
i)[xyz]:x或者y或者z中的一个
j)[^xyz]:除了三个以外的任何一个字符
k)[a-z]:a-z之间的任何一个字符
l)[^a-z]:除了a-z之间的任何一个字符
m)\d:一个0-9之间的数字 \D:除了0-9之间的数字以外的任何字符
n)\b:匹配一个边界符 ”w1 w2 w3“
o)\w:数字,字母,下划线中的任意字符 [0-9a-zA-Z_]
p)\s:匹配一个空白字符 空格,一个制表符(四个空格就是一个制表符),换页符...
2)代表出现次数的量词元字符
a)*:出现零到多次
b)+:出现一到多次
c)?:出现零次或者一次
d){n}:出现n次
e){n,}:出现n到多次
f){n,m}:出现n到m次
var reg = /^\d+$/;只能是一个或者多个数字 console.log(reg.test("2015")); // true // 一个简单的验证手机号的正则:11位数字,第一位是1 var reg = /^1\d{10}$/;
2.元字符应用
1)有效数字的正则:正数,负数,零,小数
a)可以出现小数点,也可以不出现小数点,但是一旦出现后面必须跟着一位或者多位数字
b)最开始可能有+或者-也可以没有
var reg = /^[+-]?$/
c)整数部分,一位数可以是0-9之间的一个,多位数不能以0开头
var reg = /^ (\d | ([1-9]\d+)) $/
var reg = /^[+-]?(\d | ([1-9]\d+))(\.\d+)?$/
总结规律:
1)在中括号中出现的所有的字符都是代表本身意思的字符,没有特殊的含义
var reg = /^[.]$/
console.log(reg.test("1")) // false
console.log(reg.test(".")) // true
2)() 分组的作用
a)改变x|y的默认的优先级
var reg = /^18|19/
console.log(reg.test("18")) // true
console.log(reg.test("19")) // true
console.log(reg.test("181")) // true
console.log(reg.test("189")) // true
console.log(reg.test("119")) // true
console.log(reg.test("819")) // true
console.log(reg.test("1819")) // true
var reg = /^(18|19)$/ // 此时只能是18或者19了
3)[]中括号中不识别两位数
var reg = /^[12]$/ // 1或者2中的一个
var reg = /^[12-68]$/ // 1,2-6中的一个,8 三个中的一个
var reg = /^[\w-]$/; // 数字,字母,下划线,- 中的一个
console.log(reg.test("-"))// true