获取字符串javascript的所有变体

获取字符串javascript的所有变体,javascript,Javascript,我想得到某个字符串的所有变化。此字符串将被破折号打断。字母只能在这些破折号内变化 例如,假设我通过DFI3-334-FG12,然后我想得到该字符串的所有变体,例如: FI3-334-G12 FI3-334-F12 FI3-334-FG2 FI3-334-FG1 DI3-334-G12 DI3-334-F12 DI3-334-FG2 DI3-334-FG1 DF3-334-G12 DF3-334-F12 DF3-334-FG2 DF3-334-FG1 DFI-334-G12 DFI-334-F12

我想得到某个字符串的所有变化。此字符串将被破折号打断。字母只能在这些破折号内变化

例如,假设我通过DFI3-334-FG12,然后我想得到该字符串的所有变体,例如:

FI3-334-G12
FI3-334-F12
FI3-334-FG2
FI3-334-FG1
DI3-334-G12
DI3-334-F12
DI3-334-FG2
DI3-334-FG1
DF3-334-G12
DF3-334-F12
DF3-334-FG2
DF3-334-FG1
DFI-334-G12
DFI-334-F12
DFI-334-FG2
DFI-334-FG1
有人能帮忙吗?我尝试过循环,但我只尝试过将其分解并获得不同部分:

FI3,DI3,DF3,DFI
334
G12,F12,FG2,FG1
这是我的代码:

        $('#filter').on('click',function() {
            var input = $('#code').val();
            var parts = input.split("-");
            var fixed = Array();
            for(var i=0;i<parts.length; i++) {
                if(parts[i].length != 3) {
                    k = 0;
                    fixed[i] = new Array();
                    for(var c=0;c<parts[i].length;c++) {
                        fixed[i][k] = parts[i].replace(parts[i].charAt(c),"");
                        k++;
                    }
                } else {
                    fixed[i] = parts[i];
                }
            }
            var final = Array();
            $.each(fixed,function(i) {
                $('#code_result').append(fixed[i] + "<br>");
            })
        });

如果您知道在这种情况下有多少段是3段,那么可以使用循环来获得每个可能的组合

请参见我的示例:

和刚才你知道的,你看2个部分[0 ]。长度- 1×2 ^部分[1 ]。长度-1 *2 ^部分[2 ]。长度-1组合1575,在这种情况下,取出空白组合。


注意:这完全取决于您对所有可能组合的定义。

我无法想象为什么正则表达式不能轻松解决这个问题,可能是因为需要捕获组,但是,如果没有更简洁的变量定义,就很难提供简洁的答案。我发布了一个我想要的示例。如果是这样的话,那么你的例子告诉我们的只是你想要一些组合,而不是其他组合。由你来告诉我们你想要什么。不要只说“甚至不关闭”。这对示例有效,但字符串也可以是4DF-34D3-93F。这4个字符不限于第一个和最后一个“部分”,因此所有3个字符可能都有4个字符长,或者只有2个字符,或者只有1个字符。您的问题不清楚。您需要在此处详细解释以帮助您。
    var string= 'DFI3-334-FG12';
    var parts = string.split('-');
    for(var i=0;i<parts[0].length;i++)
        for(var j=0;j<parts[2].length;j++){
            p1 = parts[0].substring(0,i)+parts[0].substring(i+1,parts[0].length);
            p2 = parts[2].substring(0,j)+parts[2].substring(j+1,parts[2].length);
            console.log(p1+'-'+parts[1]+'-'+p2);    
        }
for(var i=0; i<parts[0].length; ++i) {
  for(var j=0; j<parts[1].length; ++j) {
      for(var k=0; k<parts[2].length; ++k) {
          strings.push(parts[0][i]+'-'+parts[1][j]+'-'+parts[2][k]);
      }
  }
}