美文网首页
正则表达式

正则表达式

作者: 小旎子_8327 | 来源:发表于2020-02-06 17:01 被阅读0次

概念:

按照某种规则匹配符合条件的字符串

语法:

元字符:

在正则表达式有特殊含义的非字母字符

  • 边界类
    ^:匹配开头
    &:匹配结尾
    /b:匹配边界
  • 范围类
    [a-zA-Z]
  • 预定义类
    \d: 数字
    \w:字母数字下划线
    \s:空格
    .:除了回车或换行符的所有字符
  • 量词
    ?: 0或1
    +:1或多次
    *: 0或多次
    {n}:出现n次
    {n, m}: 出现n到m次
    {n,}:至少出现n次
  • 修饰符:
    g: 全局搜索
    i: 忽略大小写
    M: 多行搜索

贪婪模式和非贪婪模式

贪婪模式:尽可能多的匹配
非贪婪模式:尽可能少的匹配----做法:在量词后加?

分组

  • 用()来分组, 使量词作用于分组
  • 用|表示或
  • $表示反向引用, 如$1, 需要分组的内容记得加括号
  • 分组内加上(?:)则不捕获该分组 例子:(?:\d)(\w) \w为$1的内容

前瞻和后顾

正则表达式是从头部向尾部解析,所以尾部是前,头部是后
正则表达式匹配到规则到时候,向前检查字符串是否符合断言,后顾则相反(JS不支持后顾)
符合或不符合特定断言称为正向匹配或者负向匹配

  • 正向前瞻: exp(?=assert) 例:\d(?=\w)
  • 负向前瞻: exp(?!assert)
  • 正向后顾: exp(?<=assert) (js不支持)
  • 负向后顾: exp(?<!assert)(js不支持)

JS的正则表达式

RegExp实例化

  • 字面量
    var reg = /\big\b/
  • 构造函数
    var reg = new RegExp(‘\bis\b’, ‘g’);

RegExp对象属性

  • global
  • ignore
  • multiline
  • lastIndex
  • source

RegExp常用方法

  • test 返回 true false
  • exec 返回null 或结果数组( 返回结果有点绕,建议看文档)
    结果数组分全局调用和非全局调用

字符串对象常用方法

  • search 返回 index 或 -1 忽略全局匹配
  • match 返回null或数组 分全局调用和非全局调用
  • split
  • replace

str.replace(regexp|substr, newSubStr|function)
function参数
match:匹配的子串
$1,$2……
index: 匹配到的子字符串在原字符串中的偏移量
string:被匹配的原字符串
NamedCaptureGroup:命名捕获组匹配的对象

习题

给一个连字符串例如:get-element-by-id转化成驼峰形式。

function transform(string){
  return string.replace(/-\w/g, function(match){
      return match.slice(1).toUpperCase();
  })
}

function transform(string){
  return string.replace(/(-)(\w)/g, function(match, $1, $2){
    return $2.toUpperCase();
  });
}

匹配二进制数

var str = "10101111";
var reg = /^[01]+$/g;
reg.test(str);

var str = "10101111";
var reg = /^(0|1)+$/g;
reg.test(str);

非零的十进制数字 (有至少一位数字, 但是不能以0开头)

var str = '1'
var reg = /^[^0]\d*$/g;
reg.test(str);

匹配一年中的12个月

var str = "12";
var reg = /^(1[0-2])|(0?[1-9])$/g
reg.test(str);

匹配qq号最长为13为

var str = '1222222222';
var reg = /[1-9]\d{4,12}/g
reg.test(str);

分割数字每三个以一个逗号划分

var str = '122456789';    
var reg = /(\d{3})/g;
str.replace(reg, '$1,');

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式

      本文链接:https://www.haomeiwen.com/subject/qvhuxhtx.html