String 里 RegExp 实例的应用
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 技术交流群。
上一篇: RegExp 原型属性和方法
下一篇: TypeScript 常见问题
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论