正则表达式分割字符串

形如"aaaabbbbcccc"的字符串,怎么分割成"aaaa","bbbb"和"cccc"?

阅读 3k
4 个回答

很简单

str.match(/(\w)\1*/g)

感觉用正则大材小用了,其实可以按照如下的方法实现。

function mysplit(str) {
    res = []  
    l = 0
    r = 1
    
    while(r < str.length) {
       if (str.charAt(r) != str.charAt(l)) {
            res.push(str.slice(l,r))
            l = r
       }  else {
            r = r + 1
       }
    } 
    
    res.push(str.slice(l,r))
    
    return res
}
 
str = "aaaabbbbcccc"   
console.log(mysplit(str))

如果非要用正则的话

str = "aaaabbbbcccc"

var regexp = /a+|b+|c+|d+|e+|f+|g+|h+|i+|j+|k+|l+|m+|o+|p+|q+|r+|s+|t+|u+|v+|w+|x+|y+|z+|A+|B+|C+|D+|E+|F+|G+|H+|I+|J+|K+|L+|M+|O+|P+|Q+|R+|S+|T+|U+|V+|W+|X+|Y+|Z+|/g

var matches_array = str.match(regexp)

console.log(matches_array)

// [ 'aaaa', 'bbbbb', 'cccccc', '' ]
var str = "aaaabbbbcccc";
function strRepeat(str){
  var preStr = ""
  var strArr = [];
  for(var i=0;i<str.length;i++){
      if(str[i]==str[i+1]){
          preStr += str[i];
      }else{
        preStr += str[i];
        strArr.push(preStr);
        preStr = ""
      }
  }
  return strArr;
}
console.log(strRepeat(str))

最好别用正则,正则的话需要向后断言性能会慢。

'aaaabbbbcccc'.match(/(\w)\1{3}/g)
(3) ["aaaa", "bbbb", "cccc"]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题