2017-11-18 100 views
1

我正在使用正則表達式來查找字符串中的匹配項。僅找到第一個匹配並返回數組中的剩餘字符

輸入作爲 「一個」

變量作爲 「香蕉」

需要作爲陣列[ '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

回答

3

你可以採取的搜索字符串和替換第一找到一個空字符串。然後分割字符串以獲取單個字符。

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

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

+0

謝謝妮娜..簡單和偉大的答案。回答我的問題,每次:) – Arun

1

這個發現在比賽前和輸入字符串(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);

1

<!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 ..... –

1

沒有正則表達式需要。你可以簡單地做如下:

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

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

相關問題