String 里 RegExp 实例的应用

发布于 2025-01-20 14:05:53 字数 2658 浏览 2 评论 0

String.prototype.search()

  • 返回第一个匹配项的在字符串中的位置索引。否则将返回-1
  • 不执行全局匹配,它将忽略修饰符 g,并且总是从字符串的开始进行检索
'abc'.search(/a/)    // 0
/a/[Symbol.search]('abc')    // 0

String.prototype.split()

  • 方法切割 String 对象为一个其子字符串的数组
'a-b-c'.split(/-/)    //    ["a", "b", "c"]
/-/[Symbol.split]('a-b-c')    //    ["a", "b", "c"]

String.prototype.match()

  • 返回整个匹配结果(有 g),和通过捕获组匹配到的结果组成的数组(没有 g),如果没有匹配到则返回 null
'abc'.match(/a/g)    //    ["a"]【有 g】

/a/[Symbol.match]('abc') // 【无 g】
// 0: "a"
// groups: undefined
// index: 0
// input: "abc"
// length: 1
// __proto__: Array(0)

String.prototype.matchAll()

  • 返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器
  • 必须是设置了全局模式 g 的形式,否则会抛出异常 TypeError
'abca'.matchAll(/a/g)    //    RegExpStringIterator {}
/a/[Symbol.matchAll]('abc')    //    RegExpStringIterator {}

String.prototype.replace()

  • 返回用替换器替换相应匹配项后的新字符串
'abca'.replace(/a/g, 'A')    //    'AbcA'
/a/[Symbol.replace]('abc', 'A')    //    'Abc'
function validateMobile (str) {
  return /^[1][0-9]{10}$/.test(str) && str.replace(/(\d{3})(\d{4})(\d{4})/, function (rs, $1, $2, $3) {
    console.log(arguments)
    return `${ $1 }****${ $3 }`
  })
  // return /^[1][0-9]{10}$/.test(str) && str.replace(/(\d{3})(\d{4})(\d{4})/, '$1****$2')    // 这里自带字符窜替换
}
console.log(validateMobile('13590199192'))
// [Arguments] {
//   '0': '13590199192',
//   '1': '135',
//   '2': '9019',
//   '3': '9192',
//   '4': 0,    //    index
//   '5': '13590199192'    //    input
// }
// 135****9192

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

南薇

暂无简介

文章
评论
26 人气
更多

推荐作者

迎风吟唱

文章 0 评论 0

qq_hXErI

文章 0 评论 0

茶底世界

文章 0 评论 0

捎一片雪花

文章 0 评论 0

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文