锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Javascript正则表达式

时间:2023-09-05 12:37:02 h025位移传感器

一、正则表达式

正则表达式用于匹配和检索替换字符串模式,是匹配字符串执行模式的有力工具。 

二、创造正则表达式

  1. 字面量方式
let str = "abcd" // 检测str是否包含字母c /c/.test(str)  //输出true // 检测str是否包含字母c,变量写法 let keyword = "c" let regex = eval(`/${ 
          keyword}/`) //eval函数将字符串成表达式 regex.test(str) 
  1. Regex对象方式
let str = "abcdabcd" // 检测str是否包含字母c let regex = new Regex('c') regex.test(str) // 输出true 

以字面量的形式写元字符时,只需要\x
构造函数书写元字符时,需要使用\\x

三、匹配模式

修饰符 描述
i 执行对大小写不敏感的匹配。
g 全局匹配(找到所有匹配,而不是在找到第一个匹配后停止)。
y 连续全局
m 执行多行匹配。
s 执行单行匹配
u unicode,多字节

四、元字符

  1. 基本元字符,\代表转义
元字符 描述
. 除了换行和行结束符,搜索任何单个字符。
\w 查找数字、字母和下划线。
\W 查找非单词(数字、字母和下划线)字符。
\d 查找数字。
\D 找非数字字符。
\s 找空白字符。
\S 找非空白字符。
\b 匹配单词边界。
\B 匹配非单词边界。
\0 查找 NULL 字符。
\n 找换行符。
\f 找换页符。
\r 找回车符。
\t 找制表符。
\v 找垂直制表符。
\xxx 查找以八进制数 xxx 规定的字符。
\xdd 搜索16进制数 dd 规定的字符。
\uxxxx 搜索16进制数 xxxx 规定的 Unicode 字符。

五、分组

表达式 描述
[abc] 在方括号之间找到任何字符。
[^abc] 在方括号之间找到任何字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
(red|blue|green) 查找任何指定的选项。一个整体或一个整体

圆括号()

  1. 表示一个整体
// abc d出现两次
/abcd{ 
        2}/.test("abcdd") //true
// abcd整体出现两次
/(abcd){ 
        2}/.test("abcdabcd") //true
  1. 单独捕获
let regex = /\d+(\w)\d+/
let result = regex.exec("520H025") //拿到圆括号中匹配的内容
console.log(result[0]) //输出H

当.出现在[]和()中就表示"."字符

六、限定符

用来限定元字符出现的次数
量词 描述
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。
n{X} 匹配包含 X 个 n 的序列的字符串。
n{X,} X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。
n{X,Y} X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。
n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。
?<=n 匹配任何紧跟指定字符串n的字符串
? 匹配任何前面没有指定字符串n的字符串

七、汉字与字符属性

var str = "你好Hello world1234";
console.log(str.match(/\p{L}/gu))
// 获取汉字
console.log(str.match(/\p{sc=Han}/gu))

八、正则对象的方法

  1. test 验证字符串是不是符合规则
  2. exec 截取字符串里面符合正则规则的那一部分片段
let str = "1234abcdabcd"
console.log(/abcd/.exec(str))

在这里插入图片描述
返回一个数组:
0: 截取的符合正则的片段
index:从第几个位置开始截取的
input:从哪个字符串中截取的
groups:
length:

不管有多个片段都只截取第一个片段
不管截取多少次都只截取第一个片段

贪婪模式:
当给一个符号使用限定符的时候,会尽可能多的捕获内容

let reg = /\d+/
console.log(reg.exec("abcd1234")) //输出1234

非贪婪模式
当给一个符号使用限定符的时候,会按最小值捕获内容

let reg = /\d+?/
console.log(reg.exec("abcd1234")) //输出1

九、字符串与正则表达式相关的方法

  1. search(字符串或正则)
查找符合指定规则的字符串,如果存在,则返回对应位置的索引,如果不存在则返回-1
  1. replace(字符串或正则,新的内容)
替换符合指定规则的字符串
(1). 没有全局标识符g的时候,只能替换第一个查找到的内容,返回新的替换好的字符串
(2). 有全局标识符g的时候,会把字符串中所有满足规则的内容全部替换,返回替换好的字符串
 <div>
    Herrona
  </div>

  <script>
    let keyword = "r" //高亮关键字
    let regex = eval(`/${ 
          keyword}/g`) //正则表达式
    let box = document.querySelector("div")
    box.innerHTML = box.innerHTML.replace(regex, search => { 
        
      return `${ 
          search}`;
    })
  </script>

执行结果:

  1. match(字符串或正则)
当正则表达式没有全局标识符g的时候,返回值与正则对象的exec方法一样
当正则表达式有全局标识符g的时候,返回一个数组,里面是所有满足条件的内容
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章