我正在使用正则表达式来查找字符串中的匹配项。
输入为“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”
变量:“说话”
一切正常
答案 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"));