正则表达式

在一堆繁多的字符串中 依旧 “特性” 提取自己所需要的东西

处理文本的一大利器

正则如何算法一般也需要掌握,提高效率的工具

一些问题

学习正则,要学习什么东西?哪些内容,学多深,究竟是一个什么东西

关键字

  • 描述
  • 理解目标文本
  • 提取

非常强大的匹配工具,我认为还是有必要掌握好它,能提高工作效率。

正则表达式则要用 其特有的思维方式看待问题

正则表达式我认为设计两个非常重要的方面。

  • 提取

  • 匹配:重中之重,判断某些字符串符不符合我们的要求,这个时候就需要我们用到匹配。
    如: 手机号码验证,邮箱,身份证,密码需要有特殊字符串,信用卡,银行卡,等等。。

  • 替换 : 如把“b&&a” 替换 为 “三目表达式”

特殊字符

训练匹配

匹配

匹配然后拿捕获的替换

1
"37.500".replace(/(\.\d\d[1-9]?)\d*/g, "$1");

匹配单词组

1
2
// (?:x) 非匹配捕获
console.log("fooo foo".match(/(?:foo){1,2}/g)); // ["foo","foo"]
1
2
// (?:x) 匹配捕获
console.log("fooo foo".match(/(foo){1,2}/g)); // ["foo","foo"]

尽管两个匹配结果相同,区别 第二个会把记录匹配字符,用于替换时候用。

24 小时匹配

1
2
3
console.log(
"23:59 xxxxx 15:30---09:00".match(/(1[0-9]|2[0-3]|0[0-9]):[0-5][0-9]/g)
);

替换

&& 换成三元

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var test = `
<View>
{data1&&(<View>test1</View>)}
{data2&&(<View>test2</View>)}
</View>
`;

console.log(test.replace(/&&(\(.*\))}/g, "?:$1:null}"));

`
<View>
{data1?:(<View>test1</View>):null}
{data2?:(<View>test2</View>):null}
</View>
`;

插入逗号

1
2
3
console.log("298444215".replace(/(\d{3})(\d{3})(\d+)/, "$1,$2,$3"));

console.log("298444215".replace(/(?<=\d)(?=(\d\d\d)+$)/g, ","));

环视 -不匹配任何文本,匹配特定位置

这就像一个 三目表达式一样,条件匹配,可以这么说。

/(?=jerry)jer/g 如果 这个位置之后有 jerry 则匹配 jer


http://example.com/2023/07/13/计算机基础/正则表达式/
作者
chen heng cheng
发布于
2023年7月13日
许可协议