字符串对象共有 4 个方法,可以使用正则表达式:match()replace()search()split()

ES6 将这 4 个方法,在语言内部全部调用RegExp的实例方法,从而做到所有与正则相关的方法,全都定义在RegExp对象上。

  • String.prototype.match 调用 RegExp.prototype[Symbol.match]
  • String.prototype.replace 调用 RegExp.prototype[Symbol.replace]
  • String.prototype.search 调用 RegExp.prototype[Symbol.search]
  • String.prototype.split 调用 RegExp.prototype[Symbol.split]

 

split();
// - 可以将一个字符串,拆分为一个数组
// - 方法中可以传递一个字符串作为参数,这个方法将会根据正则表达式来拆分字符串
// -这个方法即使不指定全局匹配,也会全部拆分
var str = "1a2b3c4d";
var result = str.split(/[A-z]/);
console.log(result);

 

search()

//-和indexOf()有着异曲同工之妙
// -可以搜索字符串中是否含有指定的内容
// -如果搜索到指定内容,则会返回第次出现的索引,如果没有搜索到返回-1;
// -它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串
// -search()只会查找第一个,即使设置全局匹配也没用
var str = "hello abc hello aec";
//搜索一个字符串中是否含有abc或aec或afc
var result = str.search(/a/);

console.log(result);
var result = str.indexOf('aec');
console.log(result);

 

match()
// -可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
// -默认情况下我们的match只会找到第一个符和要求的内容,找到以后就停止检索
// -我们可以设置正则表达式为全局匹配模式,这样就可以匹配到所有内容
// -可以为一个正则表达式设置多个匹配模式,且顺序无所谓
// -match()会将匹配到的内容封装到一个数组中返回,即使查询到一个,也是数组
var str = "1a2b3c4d5e";
var result = str.match(/[A-z]/g);
// var result = str.match(/[a-z]/ig);
console.log(result);
// console.log(Array.isArray(result)); 判断结果是否为数组

 

 

replace()
// -可以将字符串中指定的内容替换为新的内容
// -参数
// 1.被替换的内容,可以接受正则表达式作为参数
// 2.新的内容
var str = "1a2b3c4d5e";
// var result = str.replace("a","@-@");
var result = str.replace(/[a-z]/ig,""); //将字母删掉
console.log(result);

posted on 2021-01-06 10:43  Godfather-twq  阅读(1454)  评论(0编辑  收藏  举报