js之正则表达式

测试工具

在线测试工具

掘金待整理

https://juejin.cn/post/6844903933995925518

https://juejin.cn/post/6868559656088944648

1 概述

正则表达式( Regular Expression 用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。

正则表通常被用来检索、替换那些符合某个模式(规则)的文本,例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配)。此外,正则表达式还常用于过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等 。

  • 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")
  • 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串
  • 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等

1.1 作用

1、 测试字符串内的模式:例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证

2、 替换文本:可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。

3、 基于模式匹配从字符串中提取子字符串:可以查找文档内或输入域内特定的文本。

2 创建正则表达式

1、 通过调用 RegExp 对象的构造函数创建

var 变量名 = new RegExp(/表达式/); 

2、 通过 字面量 的方式创建 -- 推荐

var 变量名 = /表达式/

正则表达式还可以加一个参数

var 变量名 = /表达式/[switch]

switch(也称为修饰符) ,是指按照什么样的模式来匹配,有三种值:

g:全局匹配

i:忽略大小写

gi:全局匹配 + 忽略大小写

2.1 测试正则表达式 test

test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测试字符串

// 检测str文本是否符合我们写的正则表达式规范
regexObj.test(str)

1、 regexObj 是写的正则表达式

2、 str 我们要测试的文本

3 正则特殊字符

3.1 边界符

正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符

边界符 说明
^ 表示匹配行首的文本(以谁开始)
$ 表示匹配行尾巴的文本(以谁结束)

如果 ^ 和 $ 在一起,表示必须是精确匹配

3.2 字符类

字符类表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括号内

字符类 案例 说明
[] 方括号 /[abc]/.test('andy') // true 后面的字符串只要包含 abc 中任意一个字符,都返回 true
[-] 方括号内部: 范围符- /[1]$/.test('c') // true a 到 z 26个小写英文字母都可以
[^] 方括号内部: 取反符^ /[^abc]/.test('andy') // false 只要包含方括号内的字符,都返回 false

3.3 量词符

量词符 说明
* 重复0次或多次 >=0
+ 重复1次或多次 >=1
重复0次或1次 0或者1
重复 n 次
重复 n 次 或更多次 >=n
重复 n 次 到 m 次 >=n && <=m

3.4 预定义类

预定义类 说明
\d 匹配0-9之间的任一数字,相当于 [0-9]
\D 匹配所有0-9以外的字符,相当于 [^0-9]
\w 匹配任意的字母、数字和下划线,相当于 [a-zA-Z0-9_]
\W 除所有字母、数字和下划线以外的字符,相当于 [^a-zA-Z0-9_]
\s 匹配空格 (包括换行符、制表符、空格等)(或匹配任意的空白符),相当于[\t\r\n\v\f]
\S 匹配非空格的字符,相当于 [^\t\r\n\v\f]
. 匹配除了换行符以外的所有字符

4 正则替换 replace

replace() 方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或是一个正则表达式

stringObject.replace(regexp/substr,replacement)

1、 第一个参数: 被替换的字符串 或者 正则表达式

2、 第二个参数: 替换为的字符串(想要替换为什么字符串)

3、 返回值是一个替换完毕的新字符串


  1. a-z ↩︎

posted @ 2023-10-10 09:56  songxia777  阅读(10)  评论(0编辑  收藏  举报