正则:
它就是一个规则,用来处理字符串的一个规则(正则就是用来处理字符串的)
1、处理:
a、匹配:判断一个字符串是否符合我们制定的规则---->用test进行判断 test:reg.test(str)
b、捕获:把字符串中符合我们正则规则的内容捕获到--->exec:reg.exec(str)
2、如何创建一个正则
字面量方式: var reg=/\d/;
实例创建方式:var reg=new RegExp("");
两种创建方式的区别:
a、字面量方式中出现的一切都是元字符,所以不能进行变量值的拼接,而实例创建的方式是可以的
b、字面量方式中直接写\d就可以,而在实例中需要把它转译 \\d
在字面量方式中,/ /之间包起来的所有内容都是元字符,有的具有特殊意义,大部分都是代表本身含义的普通的元字符
var name="abc";
var reg=/^\d+"+name+"\d+$/g;
console.log(reg.test("1234abc5678")); //--->false
consloe.log(reg.test('1234""""nameeee"5678')); //--->true
以上情况,只能使用实例创建方式了
var reg=new RegExp("^\\d+"+name+"\\d+$","g");
3、如何学习正则:
用console.dir(RegExp.prototype);
来学习,看正则原型上都有哪些方法(用面向对象思想来学习js)
正则的元字符及简单应用:
元字符:每一个正则表达式都是由元字符和修饰符组成的,【元字符】:在 / /之间具有意义的一些字符
1、具有特殊意义的元字符:
\:转义字符,转译后面字符所代表的含义
^:以某一个元字符开始(没有实际位置)
$:以某一个元字符结尾(没有实际位置)eg:
var reg=/\d/; //--->包含一个0-9之间的数字`
`var reg=/^\d$/; //^和$放一起用时代表只能是xxx的意思,只能是一个0-9之间的数字
\n:匹配一个换行符
.:除了\n以外的任意字符
eg:
var reg=/^0.2$/; //以0开头,以2结尾,中间可以是除了\n的任意字符`
`var reg=/^0\.2$/; //此时 . 就代表小数点,用转义字符实现
( ):分组--->把一个大正则本身划分成几个小正则(var reg=/^(\d+)haha(\d+)$/
)
a、分组的作用一:改变x|y的默认优先级
eg:
var reg=/^18|19$/;
//符合的有18、19、181、189、119、819、1819....或以1开头,或以9结尾;或者以18开头,或以19结尾
var reg=/^(18|19)$/; //只能是要么18要么19了
[ ]:
a、在[ ]中出现的所有的字符都是代表本身意思的的字符(没有特殊含义)
b、中括号中不识别两位数
var reg=/^[12]$/; //---->不是12,代表1或者2中的一个
var reg=/^[12-68]$/; //不是12-68,是指1、2-6中的一个、8,这三个中的一个
c、
var reg=/^[\w-]$/; //---->数字、字母、下划线、- 中的一个
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:匹配一个空白字符 空格、一个制表符、换页符
2、代表出现次数的量词元字符:
*:出现零到多次
+:出现一到多次(最少出现一次)
?:出现零次或者一次
{n}:出现n次
{n,}:出现n到多次
{n,m}:出现n到m次
eg:
var reg=/^\d+$/; //只能是一到多个数字,且每个都在0-9之间
var reg=/^1\d{10}$/; //简单的验证手机号的正则:11位数字,第一位是1;)
元字符的简单应用:
1、有效数字的正则:(正数、负数、零、小数)
a、“.”可以出现也可以不出现,一旦出现,后面必须跟着一位或多位数字
var reg=/^(\.\d+)?$/;
b、最开始可以有+/-,也可以没有
var reg=/^[+-]?$/;
c、整数部分,一位数可以是0-9之间的一个,多位数不能以0开头
var reg=/^(\d|([1-9]\d+))$/; //改变优先级了
2、年龄介于18-65之间:
给划分为三段:18-19,20-59,60-65(有规律的)
var reg=/^(1[8-9]|[2-5]\d|6[0-5])$/;
3、验证邮箱的正则(简版):
左边:数字、字母、下划线、“.”、“-”等,例如:123456789@qq.com,12345678@163.com.cn,hahahah@kindle.cn等
var reg=/^[\w.-]+@[0-9a-zA-Z]+(\.[a-zA-Z]{2-4}){1,2}$/; //最后是指(\.[a-zA-Z]{2-4})整个再出现1或2次(.com.cn);+指重复一或多次
4、中国标准真实姓名: 2-4位汉字
var reg=/^[\u4e00-\u9fa5]{2,4}$/;
\u4e00和\u9fa5代表最开始和结尾汉字的Unicode编码
5、身份证号码:
var reg=/^(\d{2})(\d{4})(\d{4})(\d{2})(\d{2})(\d{2})(\d)(\d|X)$/;
省(2位)+市(4位)+出生年+月+日+(2位数)+性别(1位,男奇数女偶数)+尾数(数或X)