仅找到第一个匹配并返回数组中的剩余字符

问题描述:

我正在使用正则表达式来查找字符串中的匹配项。仅找到第一个匹配并返回数组中的剩余字符

输入作为 “一个”

变量作为 “香蕉”

需要作为阵列[ 'B', 'A', 'N', 'A']

I中试图输出事情:

https://regex101.com/r/k3bRid/1

代码

var regex = '[^' + input + ']'; 
      regex = new RegExp(regex, 'gi') 
      var reduceArr = variable.match(regex); 

它应产生与剩余的字符仅排除第一输入匹配阵列.. 输入可以是单独的字符或两个字符

实施例尝试:用于输入

:“TA”

for variable:“talking”

它正常工作

+1

我不太明白。你的标题要求“没有重复的剩余字符”,但是'['b','a','n','a']'确实有重复的'a's。请详细解释。 –

+0

对不起,重复的输入...正则表达式应该只匹配第一次...其余的字符应返回作为字符在数组 – Arun

你可以采取的搜索字符串和替换第一找到一个空字符串。然后分割字符串以获取单个字符。

function getParts(input, string) { 
 
    var regex = new RegExp(input, 'i') 
 
    return string.replace(regex, '').split(''); 
 
} 
 

 
console.log(getParts('an', 'banana'));

+0

谢谢妮娜..简单和伟大的答案。回答我的问题,每次:) – Arun

这个发现在比赛前和输入字符串(regex101)后:

var input = 'an'; 
 
var variable = 'banana'; 
 

 
var regex = new RegExp('^(.*?)' + input + '(.*)$', 'i'); 
 
var reduceArr = (variable.match(regex) || []).slice(1).join('').split(''); // if matches where found, combine capture groups and split to characters 
 

 
console.log(reduceArr);

<!DOCTYPE html> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head> 
 
    <script src="https://code.jquery.com/jquery-1.9.1.js"></script> 
 
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 

 
    <script type="text/javascript"> 
 
     $(document).ready(function() { 
 
      var input = 'an'; 
 
      var variable = 'banana'; 
 
      var regex = variable.replace(input, '');; 
 
      var arr=new Array(regex.split('')); 
 
      console.log(arr); 
 
     }); 
 
    </script> 
 

 
</head> 
 
<body> 
 
</body> 
 
</html>

+0

好一个兄弟...如果你链接线,将是伟大的 – Arun

+0

thnk你bhai ..... –

没有正则表达式需要。你可以简单地做如下:

var bazooka = (t,s) => s.replace(t,"").split(""); 
 

 
console.log(bazooka("an","banana")); 
 
console.log(bazooka("harbur","berlingo"));