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

时间:2017-11-18 08:38:12

标签: javascript arrays regex

我正在使用正则表达式来查找字符串中的匹配项。

输入为“an”

变量为“banana”

需要输出数组['b','a','n','a']

我尝试了下面的事情:

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

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

它应生成包含剩余字符的数组,仅排除第一个输入匹配项。 输入可以是单个字符或两个字符

示例已尝试:

输入:“ta”

变量

:“说话”

一切正常

4 个答案:

答案 0 :(得分:3)

您可以使用搜索字符串并将第一个查找替换为空字符串。然后拆分字符串以获取单个字符。

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

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

答案 1 :(得分: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);

答案 2 :(得分: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>

答案 3 :(得分:1)

不需要正则表达式。您可以按照以下步骤进行操作;

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

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