Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于过滤某些字符的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 用于过滤某些字符的正则表达式

Javascript 用于过滤某些字符的正则表达式,javascript,regex,Javascript,Regex,如果向您提供一个随机字符串,例如: “u23ntfb23nnfj3mimowmndnwm8” 我想过滤掉某些字符,比如2,b,j,d,g,k和8 因此,在本例中,函数将返回'2bjd8' 互联网上有很多文献,但没有一篇是直截了当的。创建一个正则表达式来过滤字符串应该不会太难吧 注:这不是家庭作业,但我对愚蠢的朋克很酷,你需要先创建一个正则表达式,然后在你的字符串上执行它 这就是您需要的: var str=“u23ntfb23nnfj3mimowmndnwm8”; var re=/[2bjd8]

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

“u23ntfb23nnfj3mimowmndnwm8”

我想过滤掉某些字符,比如2,b,j,d,g,k和8

因此,在本例中,函数将返回
'2bjd8'

互联网上有很多文献,但没有一篇是直截了当的。创建一个正则表达式来过滤字符串应该不会太难吧


注:这不是家庭作业,但我对愚蠢的朋克很酷,你需要先创建一个正则表达式,然后在你的
字符串上执行它

这就是您需要的:

var str=“u23ntfb23nnfj3mimowmndnwm8”; var re=/[2bjd8]+/g;
警报((str.match(re)| |[])。加入(“”)您可以使用字符类来定义字符

使用该方法分析字符串,然后过滤掉重复项

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"

非常感谢,让我运行一些testsOutput给我“2”。对不起,我的第一句话,我看错了问题。我认为OP想要排除字符集,而不仅仅包括字符集。如果他想要一个包含所有匹配项的数组,他应该应用
str.match(re)
,也许可以使用
.join(“”)
将所有匹配项连接成一个字符串。这就是他对函数的期望:他应该应用
str.match(re.join)(“”)
Yeah
.match()
似乎是一个不错的选择。就像上面说的那样,它会删除这些字母,我们只需要使用
String.prototype.match()
就可以获得所有匹配项。具体来说,您希望包括(或者排除)哪些字符?问题中提供的列表是否全面?您希望给定字符只出现一次,还是全部出现?您需要将它们分隔成一个数组,还是将它们连接成一个字符串?@marcusdei为什么您认为这是正则表达式的一项好任务?我并不是说这是不可能的,但这是不必要的,而且会使代码过于复杂。@marcusdei,不客气,如果您需要我更改任何内容,请告诉我。