JS正则表达式

 

正则表达式

一,定义

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));