js、ts正则表达式基础使用

// 正则是用来做字符匹配的
let str = "Hello, World!";

// 格式使用 /正则表达式内容/,如下
let regex = /World/;
// 构造类使用
let regexCls = new RegExp("World");
// 上面两种方式等同

// string 中可使用正则的方法有 search、match 和 replace
console.log(str.match(regex)); // [ 'World', index: 7, input: 'Hello, World!', groups: undefined ]
str.replace(regex, "auto"); // replace 将会返回一个新的字符串
console.log(str); // Hello, World!
console.log(str.search(regex)); // 7

// 规则
// 修饰符
// i 执行大小写不敏感匹配
// g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
// n 执行多行匹配

// i 使用
console.log(regex.test("world")); // false

// regex = /world/i;
console.log(regex.test("world")); // false

// g 使用
console.log(regex.exec("hh, world, world")); // [ 'world', index: 4, input: 'hh, world, world', groups: undefined ]

// regex = /world/ig;
console.log("hh, world, world".match(regex)); // [ 'world', 'world' ]

/**
 * 方括号[] 用来表示范围
 */

/**
 * 元字符
 * . 查找单个字符,除了换行和行结束符。
 * \d 查找数字。
 * \D	查找非数字字符。
 * \s 查找空白字符。
 * \S	查找非空白字符。
 * \b 匹配单词边界。
 * \B	匹配非单词边界。
 * \uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。
 * \w	查找数字、字母及下划线。
 * \W	查找非单词字符。
 * \0	查找 NULL 字符。
 * \n	查找换行符。
 * \f	查找换页符。
 * \r	查找回车符。
 * \t	查找制表符。
 * \v	查找垂直制表符。
 * \xxx	查找以八进制数 xxx 规定的字符。
 * \xdd	查找以十六进制数 dd 规定的字符。
 * 
 */

// .
console.log("ddddddxdd".search(/./)); // 0
console.log("\nd".search(/./)); // 1
console.log("\n\n\t\n\n".search(/./)); // 2

// \d
console.log("ddddddxdd".search(/\d/)); // -1
console.log("dddddddd8".search(/\d/)); // 8

// \D
console.log("88331".search(/\D/)); // -1
console.log("88331d".search(/\D/)); // 5

// \s
console.log("ddddddxdd".search(/\s/)); // -1
console.log("dddddd xdd".search(/\s/)); // 6
console.log("  ".search(/\s/)); // 0

// \b
console.log("Hello world!".search(/\b/)); // 0
console.log("你好,hi".search(/\b/)); // 3

// \w 查找数字、字母及下划线。
console.log("你好,hi".search(/\w/)); // 3
console.log("2你好,hi".search(/\w/)); // 0

// \W 查找非单词字符。
console.log("你好,hi".search(/\W/)); // 0
console.log("2你好,hi".search(/\W/)); // 1

/**
 * 量词
 * 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+
console.log("ddddxdddd".search(/x+/)); // 4
console.log("dddddddd".search(/x+/)); // -1

// n*
console.log("ddddxxddd".search(/b*/)); // 0 为啥

// n?
console.log("ddddddxdd".search(/x+/)); // 6

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值