ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

正则表达式语法

2022-07-18 06:33:26  阅读:217  来源: 互联网

标签:字符 匹配 正则表达式 语法 查找 字符串 替换


正则表达式

正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来

语法

使用new RegExp()创建一个正则表达式,RegExp有两个参数

  const reg = new RegExp()

方括号

  • |: 或者
  • []: 中括号中的内容也是或的关系
  • [a-z]: 任意小写字母
  • [A-Z]: 任意大写字母
  • [A-z]: 任意字母
  • [^ ]: 在中括号中加^表示是否存在除了中括号以内的内容
  • [0-9]: 任意数字

元字符

  • .: 查找单个字符,除了换行和结束符
  • \w: 查找任意字母、数字、下划线 [A-z0-9_]
  • \W: 查找除了字母、数字、下划线的内容 [^A-z0-9_]
  • \d: 查找数字 [0-9]
  • \D: 查找非数字字符 [^0-9]
  • \s: 查找空白字符
  • \S: 查找非空白字符
  • \b: 匹配单词边界
  • \B: 匹配非单词边界
  • \0: 查找NUL字符
  • \f: 查找换页符
  • \r: 查找回车符
  • \t: 查找制表符
  • \v: 查找垂直制表符
  • \xxx: 查找以八进制数 xxx 规定的字符
  • \xdd: 查找以十六进制数 dd 规定的字符
  • \uxxxx: 查找以十六进制数 xxxx 规定的 Unicode 字符

量词

通过量词可以设置一个内容出现的次数,量词只对最近的一个单位生效

  • {n}: 正好出现n次
  • {n,m}: 出现n-m次
  • {n,}: 出现n次以上
  • +: 至少一个,相当于{1,}
  • *: 任意数量,包括0,相当于{0,}
  • ?: 0或1个,相当于{0,1}
  • ^n: 用于匹配的字符串开头必须为n
  • n$: 用于匹配的字符串结尾必须为n
  • ?=n: 匹配任何其后紧接指定字符串n的字符串
  • ?!n: 匹配任何其后没有紧接指定字符串n的字符串

匹配模式

  • i: 忽略大小写
  • g: 全局匹配模式
  • m: 执行多行匹配

转义字符

  • \: 所有以单个字符为单位的关键字,需要进行匹配时,都需要使用\进行转义

字面量创建

使用两个/标识正则表达式的开头与结尾,语法为/正则表达式/匹配模式

  const reg = /a/i

方法

正则表达式内置的方法

test()

使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false

split()

根据正则表达式所匹配的字符将字符串进行切割,split()方法不管指不指定全局匹配,都会进行全局匹配切割

搜索字符串中是否含有指定内容,如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1,search()只会查找第一个,即使设置为全局匹配模式

match()

可以根据正则表达式,从一个字符串中将符合条件的内容提取出来,默认情况下match()只会找到第一个符合要求的内容,找到之后就会停止检索,我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容;match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果

replace()

可以将字符串中指定内容替换为新的内容

语法: stringObject.replace(regexp/substr, replacement)

参数 描述
regexp/substr 必需,规定子字符串或要替换的模式的 RegExp 对象,如果该值是一个字符串,优先用于文本匹配,而不是被识别为 RegExp 对象
replacement 必需,一个字符串值,规定了替换文本或生成替换文本的函数

返回值

一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

说明

字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。

字符 替换文本
$1、$2、...、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$' 位于匹配子串右侧的文本。
$$ 直接量符号。

子表达式: 在大部分场景中,子表达式表示以 () 包裹的内容,每一对单独的 () 所匹配上的内容,在replacement中都可以使用对应顺序的 $? 表示

注意: ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。

标签:字符,匹配,正则表达式,语法,查找,字符串,替换
来源: https://www.cnblogs.com/hyjax/p/16489063.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有