版权声明:本文为博主原创文章,转载请注明出处: https://blog.csdn.net/weixin_43720095/article/details/84501098
正则表达式
什么是正则表达式?
正则表达式:用于匹配规律规则的表达式,是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定的字符、及这些特定字符的组合,组成一个“规则字符串”,用来表达对字符串的一种过滤逻辑。
正则表达式的作用
- 匹配:给特定的字符串作是否符合正则表达式的过滤逻辑。
- 提取:通过正则,获取字符串中特定部分。
- 替换:强大的字符串替换能力。
正则表达式的特点
- 灵活性,逻辑性和功能性非常强
- 可以迅速用简单的方式达到字符串的复杂控制
- 对于刚接触的人来说,有点难懂
正则表达式的组成
- 普通字符
- 特殊字符(元字符):正则表达式中有特殊意义的字符
元字符
常用元字符
限定符
简单演示说明
常用元字符
* . 表示的是:除了\n以外的任意的一个字符
* [] 表示的是:范围
* [0-9] 表示的是0到9之间的任意的一个数字,
* [a-z] 表示的是:所有的小写的字母中的任意的一个
* [A-Z] 表示的是:所有的大写的字母中的任意的一个
* [a-zA-Z] 表示的是:所有的字母的任意的一个
* [0-9a-zA-Z] 表示的是: 所有的数字或者是字母中的一个
* [] 另一个函数: 把正则表达式中元字符的意义干掉 [.] 就是一个.
* | 或者 [0-9]|[a-z] 表示的是要么是一个数字,要么是一个小写的字母
* () 分组 提升优先级 [0-9]|([a-z])|[A-Z]
* ([0-9])([1-9])([a-z]) 三组, 从最左边开始计算
限定符
* * 表示的是:前面的表达式出现了0次到多次
[a-z][0-9]* 小写字母中的任意一个 后面是要么是没有数字的,要么是多个数字的
* + 表示的是:前面的表达式出现了1次到多次
[a-z][9]+ 小写字母一个后面最少一个9,或者多个9
* ? 表示的是:前面的表达式出现了0次到1次,最少是0次,最多1次 ,另一个含义:阻止贪婪模式
[9][a-z]? "12312349ij"
* 限定符:限定前面的表达式出现的次数
* {} 更加的明确前面的表达式出现的次数
* {0,} 表示的是前面的表达式出现了0次到多次,和 *一样
* {1,} 表示的是前面的表达式出现了1次到多次,和 +一样
* {0,1} 表示的是前面的表达式出现了0次到1次,和 ?一样
* {5,10} 表示的是前面的表达式出现了5次到10次
* {4} 前面的表达式出现了4次
* {,10} 错误的========不能这么写
* ^ 表示的是以什么开始,或者是取非(取反) ^[0-9] 以数字开头
^[a-z] 以小写字母开始
[^0-9] 取反,非数字
* $ 表示的是以什么结束
[0-9][a-z]$ 必须以小写字母结束
* \d 数字中的任意一个,
* \D 非数字中的一个
* \s 空白符中的一个
* \S 非空白符
* \w 非特殊符号
* \W 特殊符号
* \b 单词的边界
正则表达式运算优先级
使用正则表达式
创建正则对象
方法一
var reg = new Regex('\d', 'i');
var reg = new Regex('\d', 'gi');
方法二
var reg = /\d/i;
var reg = /\d/gi;
参数
正则匹配
console.log(/./.test("除了回车换行以为的任意字符"));//true
console.log(/.*/.test("0个到多个"));//true
console.log(/.+/.test("1个到多个"));//true
console.log(/.?/.test("哈哈"));//true
console.log(/[0-9]/.test("9527"));//true
console.log(/[a-z]/.test("what"));//true
console.log(/[A-Z]/.test("Are"));//true
console.log(/[a-zA-Z]/.test("干啥"));//false
console.log(/[0-9a-zA-Z]/.test("9ebg"));//true
console.log(/b|(ara)/.test("abra"));//true
console.log(/[a-z]{2,3}/.test("arfsf"));//true
正则提取(分组)
// 提取日期中的年部分 2015-5-10
var dateStr = '2016-1-5';
// 正则表达式中的()作为分组来使用,获取分组匹配到的结果用.$1 $2 $3....来获取
var reg = /(\d{4})-\d{1,2}-\d{1,2}/;
if (reg.test(dateStr)) {
console.log(RegExp.$1);
}
正则替换
// 1. 替换所有空白
var str = " 123AD asadf asadfasf adf ";
str = str.replace(/\s/g,"xx");
console.log(str);
// 2. 替换所有,|,
var str = "abc,efg,123,abc,123,a";
str = str.replace(/,|,/g, ".");
console.log(str);
常用正则