在javascript中对复杂字符串排序

在javascript中对复杂字符串排序,javascript,regex,Javascript,Regex,我有一个输入字符串,比如,CF10,CF6_S01,CF11_S01。我想把它按升序排序,比如,CF6,CF10,CF11。不关心字符串中的_S01。我试图根据字母表后的第一个数字进行拆分,但没有成功 var reA=/[^a-zA-Z]/g; 变量reN=/[^0-9]/g; 返回函数A,b{ var aA=a[key].replacereA; var bA=b[key].replacereA; 如果aA==bA{ var aN=parseInta[key].replacereN,10; v

我有一个输入字符串,比如,CF10,CF6_S01,CF11_S01。我想把它按升序排序,比如,CF6,CF10,CF11。不关心字符串中的_S01。我试图根据字母表后的第一个数字进行拆分,但没有成功

var reA=/[^a-zA-Z]/g; 变量reN=/[^0-9]/g; 返回函数A,b{ var aA=a[key].replacereA; var bA=b[key].replacereA; 如果aA==bA{ var aN=parseInta[key].replacereN,10; var bN=parseIntb[key].replacereN,10; 返回aN==bN?0:aN>bN?1:-1; }否则{ 返回aA>bA?1:-1; }
}; 您可以将第一部分分为非数字字符和数字。然后按第一部分和第二部分进行排序

函数getPartss{ 返回s.match/^\D+\D+/.slice1; } 变量数组=['CF10'、'CF6_S01'、'CF11_S01']; array.sorta,b=>{ var aa=getPartsa, bb=getPartsb; 返回aa[0]。localecompareb[0]| | aa[1]-bb[1]; };
console.logarray 您可以尝试以下简单的一行解决方案:

var arr=['CF10'、'CF6_S01'、'CF11_S01'] console.logarr.sorta,b=>a.match/\d+/[0]-b.match/\d+/[0] //如果你不想要第1部分
console.logarr.sorta,b=>a.match/\d+/[0]-b.match/\d+/[0]。mape=>e.split'.[0]这不是使用正则表达式的解决方案

设arr=['CF10','CF6_S01','CF11_S01']; arr.sorta,b=>{ 设var1=a.split'CF'[0]。split'CF'[1]; 设var2=b.split'CF'[0]。split'CF'[1]; 返回var1-var2 }
console.logarr针对您的用例的简单版本,无需使用正则表达式:

'CF10, CF6_S01, CF11_S01'
  .split(',')
  .map(x => x.trim())
  .sort((a, b) => {
    const [aa] = a.split('_')
    const [bb] = b.split('_')
    return aa.slice(2) - bb.slice(2)
  })

请添加您尝试过的代码。您刚才插入的代码与您正在使用的代码无关asking@Adelin是的,它是排序函数。@EECOLOR: