正则表达式/ javascript:过滤器&从数组中替换具有相同值的组

时间:2017-12-04 16:39:13

标签: javascript jquery arrays regex sorting

我有一个这样的数组:

var array=[
           '100000011022', 
           '122339311022', 
           '988881233221',
           '000130009999',
          ]

...我想找到具有相同列的组(LENGTH:最小2,最大10)并将每个组元素替换为另一个值(例如0)。

  

例如---> 988881233221 => 900001200001 (找到'8888','33','22')

所以结果应该是这样的:

var result=[
           '100000000000', 
           '100009300000', 
           '900001200001',
           '000130000000',
           ]   

因为我不知道如何使用正则表达式这是我到目前为止所做的一切,对不起!

var array=[
 '100000011022', 
 '122339311022', 
 '988881233221',
 '000130009999'
]

var result = array.join('\n').replace(/.{4,10}[^.]/g, function(a) {
  return a.replace(/./g,'0')
})
console.log(result)

2 个答案:

答案 0 :(得分:0)

使用\ 1引用任何匹配的符号。



var array=[
 '100000011022', 
 '122339311022', 
 '988881233221',
 '000130009999'
]

var result = array.join('\n').replace(/(.)\1{1,9}/g, function(a) {
   return a.replace(/./g,'0')
})
console.log(result)




答案 1 :(得分:0)

代码

See regex in use here

(\d)\1

替换:00

用法



const regex = /(\d)\1/g;
var array=[
  '100000011022', 
  '122339311022', 
  '988881233221',
  '000130009999'
]
const subst = `00`;

// The substituted value will be contained in the result variable
array.forEach(function(s, i) {
  array[i] = s.replace(regex, subst);
});

console.log(array);




说明

  • (\d)将一个数字捕获到捕获组1
  • \1匹配最近与捕获组1匹配的文本