正则表达式过滤掉某些字符

时间:2015-08-07 19:15:16

标签: javascript regex

如果您提供了一个随机字符串,例如:

,那么正则表达式字符串会是什么样子
  

" u23ntfb23nnfj3mimowmndnwm8"

我想过滤出某些字符,例如2,b,j,d,g,k和8?

因此,在这种情况下,函数将返回'2bjd8'

互联网上有很多文献,但没有直截了当的说法。创建正则表达式来过滤字符串不是很难吗?

PS。这不是家庭作业,但我很喜欢愚蠢的朋克

2 个答案:

答案 0 :(得分:8)

您需要先创建一个正则表达式,然后在string上执行它。

这就是你需要的:



var str = "u23ntfb23nnfj3mimowmndnwm8";
var re = /[2bjd8]+/g;
alert((str.match(re) || []).join(''));




要获得所有匹配,请使用String.prototype.match()与正则表达式。

它会在输出中为您提供以下匹配项:

  

2 b2 j d 8

答案 1 :(得分:6)

您可以使用字符类来定义字符。

使用match()方法分析字符串,然后过滤掉重复项。

function filterbychr(str) {
  var regex = /[28bdgjk]/g
  return str.match(regex).filter(function(m,i,self) {
    return i == self.indexOf(m)
  }).join('')
}

var result = filterbychr('u23ntfb23nnfj3mimowmndnwm8') //=> "2bjd8"