6.2 js中正则表达式简单使用

一、前言

有时候不经常用一个知识点就容易忘记最基本使用的方法,因此写下这篇文章当自己突然忘了的时候,快速捡起。

二、正文

一)、是什么

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。(摘抄于百度百科好羞耻)
我理解成:检索某个字段的公式。

二)、使用场景

解决字符匹配问题,用于论文查重、自动阅卷、爬虫、表单验证等领域

三)、怎么用

1、构造函数模式

var pat = new RegExp(“正则表达式”,“模式”);

var pat = new RegExp("[0-9]{4}-[0-9]{7}","g");
//或
var pat = new RegExp("hello","ig")

例1:匹配一个变量

var str = '我下周一要去北京'
var text = '北京';
var pat = new RegExp(text,'ig');
var result = pat.test(str);//true
2、字面量形式

var pat = /正则表达式/模式

var pat =/\d{2,}/g;
3、详细说明
(1)、表达式

举个例子
以上面的例子中 [0-9]{4}-[0-9]{7} 来说
解读:0-9中的数字出现4次和‘-’和0-9中的数字出现7次。例如:2541-2445789

  • 字符类(匹配什么内容)
  • . 匹配任何单个字符
  • \ 转义字符
  • [0-9] 匹配中括号里任意一个数字,等同于[0123456789]
  • \d 匹配任意数字,等价于[0-9]
  • [^0-9] 匹配任意非数字,上箭头在中括号里表示非
  • \D 等价于[^0-9]
  • ^[0-9] 表示任意一个数字作为一行的开始
  • \w 字符,等价于[a-zA-Z0-9_]=>[a到z,A到Z,0到9,下划线]
  • \W 非字符,等价于[^a-zA-Z0-9_]
  • \s 空白字符,空格、换行符、换页符等
  • \S 非空白字符
  • $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 \$。
  • 数量词(匹配多少次)
  • exp{3} 将前面的表达式匹配3次。例:[0-9]{3}
  • exp{3,5} 将前面的表达式匹配3到5次。 例:\d{3,5}
  • exp{3,} 将前面的表达式匹配3次或3次以上
  • exp* 将前面的表达式匹配0或多次
  • exp+ 将前面的表达式匹配1次或多次
  • exp? 将前面的表达式匹配0次或1次 (这里的‘?’是放在表达式之后)
  • 贪婪匹配 尽可能多的匹配(默认情况下都是贪婪匹配)
var str ="abc123456";
var pat =/\d{2,}/g;//这里优先匹配大于两次以上
var t = pat.exec(str); //123456
  • 非贪婪匹配 尽可能少的匹配(在数量词后面加’?’)
    例:这里的‘?’是放在数量词之后
var str ="abc123456";
var pat =/\d{2,}?/g; //这里只匹配两次
var t = pat.exec(str); //12
  • 分组(可以使匹配细化)
  • 将表达式用括号分开
var str ="abc123456";
var pat = /([a-z])([0-9])/ig; //分组
var t = pat.exec(str); //c1 c 1
var pat2 = /[a-z][0-9]/ig; //不分组
var t2 = pat2.exec(str); //c1
(2)、模式
  • i 忽略大小写
  • g 全文搜索,接着上一次记录往下查找,如果没有记录,从头开始
  • m 多行匹配
(3)、api
  • test(str) 使用正则表达式对象测试str,如果str满足正则表达式返回true,否则返回false
    返回值:布尔类型
  • exec(str) 从str中查找出满足正则表达式的字符串
    返回值:类数组对象
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页