正则表达式(regular expression)

版权声明:本文为博主原创文章,转载请注明出处: https://blog.csdn.net/weixin_43720095/article/details/84501098

正则表达式


什么是正则表达式?

正则表达式:用于匹配规律规则的表达式,是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定的字符、及这些特定字符的组合,组成一个“规则字符串”,用来表达对字符串的一种过滤逻辑。


正则表达式的作用

  1. 匹配:给特定的字符串作是否符合正则表达式的过滤逻辑。
  2. 提取:通过正则,获取字符串中特定部分。
  3. 替换:强大的字符串替换能力。

正则表达式的特点

  • 灵活性,逻辑性和功能性非常强
  • 可以迅速用简单的方式达到字符串的复杂控制
  • 对于刚接触的人来说,有点难懂

正则表达式的组成

  • 普通字符
  • 特殊字符(元字符):正则表达式中有特殊意义的字符

元字符

常用元字符

常用元字符

限定符

限定符

简单演示说明

常用元字符
    *  .  表示的是:除了\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);

常用正则


正则表达式在线工具

猜你喜欢

转载自blog.csdn.net/weixin_43720095/article/details/84501098
今日推荐