Javascript 中的正则表达式的使用,点赞加关注持续更新~

正则表达式(Regular Expression)

正则表达式(Regular Expression,通常简写为regex)是一种在计算机科学中常用的语法规则,用于匹配字符串模式。它是由一系列的字符、符号和规则组成,可以用来搜索、替换、拆分等操作字符串。

使用场景:

一般使用在账号、密码、身份证、验证码、电话号码等一些验证中

定义语法:

在JavaScript中,正则表达式被定义为一个对象,可以通过正则表达式的字面量或者使用RegExp构造函数来创建

// 字面量方式创建正则表达式  
let regex = /abc/;  
  
// 使用RegExp构造函数创建正则表达式  
let regex = new RegExp('abc');

判断是否符合规则的语法:

regObj.test(被检测的字符串)

如果正则表达式与指定的字符串匹配,返回true,否则返回false

 // lg
 // 要检测的字符串
 const str = '人之初,性本善'
 // 定义正则表达式检测规则
 const reg = /本善/
 // 检测方法
 console.log(reg.test(str)) // true

regObj.exec(被检测的字符串)

如果有匹配的的字符串返回一个数组,没有返回null

 // lg
 // 要检测的字符串
 const str = '人之初,性本善'
 // 定义正则表达式检测规则
 const reg = /本善/
 // 检测方法
 console.log(reg.exec(str)) // 返回一个数组
// ['本善',index:5,input:'人之初,性本善']

元字符

边界符
^匹配输入字符串的开始位置
$匹配输入字符串的结束位置
.匹配除了换行符(\n、\r)之外的任何字符
|匹配该符号前后的任一表达式
量词
*匹配前面的子表达式零次或多次(>=0)
+匹配前面的子表达式一次或多次(>=1)
?匹配前面的子表达式零次或一次(0 || 1)
{n}n是一个非负整数,匹配确定的n次(n)
{n,}n是一个非负整数,重复大于等于n次(>=n)
{n,m}n,m是一个非负整数,重复n到m次 [n,m]
范围
[xyz]匹配列表其中一个字符,加-表示范围,如[a-c]等价[abc]
[^xyz]匹配列表以外的任意一个字符[^a-c]等价[^abc]
修饰符
g默认正则是惰性的,可以通过添加修饰符g来全部匹配
i忽略大小写
字符类
\w匹配数字字母和下划线,等价于[A-Za-z0-9_]
\W匹配数字字母和下划线外的其它字符,等价于[^A-Za-z0-9_]
\s匹配任何空白字符,包括空格、制表符(Tab)、换页符(Page Break)等等。它是 \h(匹配任意水平空白字符)和 \v(匹配任意垂直空白字符)的组合

下面是一些示例:

  1. 检查一个字符串是否包含某个特定的词:
let regex = /apple/
let str = "I like to eat apples."
let result = regex.test(str)   // 结果为 true
  1. 使用范围符来匹配特定的字符:
let regex = /[a-z]/  // 匹配任何小写字母
let str = "Hello,world!"
let result = regex.test(str)  // 结果为 true,因为 'hello' 包含小写字母
  1. 使用边界符来匹配特定位置的字符:
let regex = /^a/  // 匹配字符串开头的 'a'
let str = "apple"
let result = regex.test(str)   // 结果为 true
  1. 使用预定义的字符集:
let regex = /[A-Z]/  // 匹配任何大写字母
let str = "Hello,World!"
let result = regex.test(str)  
console.log(result) // 结果为 true,因为 'World' 包含大写字母
  1. 使用量词:
let regex = /a+/  // 匹配一个或多个连续的 'a' 字符
let str = "apple"
let result = regex.test(str);  
console.log(result)   // 结果为 true
  1. 使用|符来匹配或排除字符:
let regex = /a|b/  // 匹配 'a' 或 'b'
let str = "apple"
let result = regex.test(str)   
console.log(result) // 结果为 true,因为 'apple' 包含 'a' 或 'b'