正则表达式
一,定义
1,正则表达式是对象,常用于表单验证(判断用户填写的内容是否正确)
2,申明方式
//第一种定义 常用
var regx = /^a$/; //申明一个正则对象,匹配 a 这一个单词
//第二种定义
var regx1 = new RegExp("^a$"); //申明一个正则对象,匹配 a 这一个单词
二,正则对象的方法
1, 使用正则表达式匹配字符串有两种方式:
1,test( ) 方法;判断是否有匹配的,返回 true 则符合, false 则不符合;
2,exec ( ) 方法;返回一个数组,数组里面为匹配的结果(返回第一个找到的)返回数组则符合, null 则不符合;
3,/[222]/g;全局查找;/[222]/i;忽略大小写;
var regx3 = /[abc]{2}/g;
console.log("abcabb".match(regx3)); //全局查找
三,正则字符
1,//. 点号,元字符;代表除了换行之外的所有单个字符
var pattern = /g..gle/; //一个点,匹配一个任意的字符;多个则匹配多个;
2,//* 星号字符;匹配 0 到多个;配合其他字符使用,允许其他字符出现多次
var pattern = /[ab]*/; //匹配0 到多个;a,b,ab,ba,aa,bb;
3,// [ ] : 表示字符可以出现的范围
var pattern = /[a-z]*/; //[a-z]*表示任意0到多个a-z的字母
4,//? 表示 0 个到一个
var regx7 = /^a[ab]?$/; //匹配 a aa ab
5,// {} 表示个数
var regx3 = /^[abc]{2}$/;
//匹配 ab bc ac ba cb ca aa bb cc 意思abc三个元素任意俩个组成的单词
6,// m 换行匹配; // g 全局匹配; // i 不区分大小写;
// g全局匹配(全局搜索所有结果 没有全局找到第一个就不找了) i表示不区分大小写
var regx4 = /^[ab]{2}$/gi; //匹配 aa ab ba bb Aa aA AA Ab aB BB Ba AB BA bA
// 使用第二种定义如果需要加上g或i关键词
var regxObj = new RegExp("^a$", "gi");
7,// + 加号;表示一个到多个;
var regx5 = /^[a]+$/; //匹配 a aa aaa aaa.. 匹配一个或多个a
8,// ( ) 括号;没有什么意义,主要做代码的范围分割;
var regx7 = /([a][b]){2}/; //匹配的元素有 abab
console.log(regx7.test("abab"));
9,// RegExp 可以直接取出括号里面的值 向上就近 RegExp.$1;
console.log(RegExp.$1); //取出第一个括号的匹配内容
console.log(RegExp.$2); //没有第二个括号的话 拿到内容为空
//如果加了?后面的括号里的内容不能捕获了 RegExp.$获取
var regx9 = /\w{6}/; //忽略掉了
10,// | 或
var regx8 = /abc|bcd/; //匹配abc 或者是bcd
console.log(regx8.test("abc"));
console.log(regx8.test("bcd"));
11,针对无法直接解析的字符,需要用到 转义符 ‘ \ ‘
//针对于里面的[] * + .等等 没有办法直接解析的 需要加转义符\
var regx8 = /^\[\]$/;
var regx9 = /^\*$/;
console.log(regx8.test("[]"));
console.log(regx9.test("*"));
12,\w :匹配数字字母下划线 ; \W: 大写,匹配除了 数字字母下划线 以外的;
// \w 等价于[a-zA-Z0-9_]
13,\d :代表数字, 等价于 [0-9]; \D:大写 匹配非数字;
// \d* :表示任意多个数字
// 相当于[^0-9]
四,支持正则表达式的方法
1,string 类型支持正则的方法
2,split 截取方法
3,replace 方法
4,serach 方法
5,match 方法
和正则对象的 exec 方法很像,返回也是一个数组;里面的元素为匹配的结果(返回第一个找到的)
var regx2 = /[abc]{2}/;
console.log("abca".match(regx2));