例子:字符串124346564abcd 输出43 65 abcd

具体实现:

str = "124346564abcd"var num = str.match(/[0-9]/g)var letter = str.match(/[a-z,A-Z]/g);// let numberList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]let numberList = [9,8,7,6,5,4,3,2,1,0]let letterList = ['a', 'b', 'c', 'd', 'e']// 找到第一个数字(字母)出现的位置function findFirst(arr,num) {  for (let index = 0; index < arr.length; index++) {      if (arr[index] == num) {         return index      }    }}let startIndex = 0if (num.length > 0) {  // 在字典中的起始位置   startIndex = findFirst(numberList, num[0])}// 数字结果let numArr = []// 处理数字let indexNum = 0function main(arr) {  // 计数标识  let numIndex = 0  let result = ''  for (let index = startIndex; index < numberList.length; index++) {      if (numberList[index] == arr[indexNum]) {        numIndex ++        indexNum ++        result += numberList[index]      } else if (numIndex >= 2) {        numArr.push(result)        result = ''        startIndex = index        numIndex = 0      } else {         startIndex = findFirst(numberList, arr[indexNum])        result = ''        numIndex = 0        if (indexNum < arr.length) {           main(num)        }        break      }  }}let startIndexLetter = 0if (letter.length > 0) {  // 在字典中的起始位置  startIndexLetter = findFirst(letterList, letter[0])}// 字母结果let letterArr = []// 处理字母let indexLet = 0function mainLetter(arr) {  // 计数标识  let numIndex = 0  let result = ''  for (let index = startIndexLetter; index < letterList.length; index++) {    if (letterList[index] == arr[indexLet]) {        numIndex ++        indexLet ++        result += letterList[index]      } else if (numIndex >= 2) {        letterArr.push(result)        result = ''        startIndexLetter = index        numIndex = 0    } else {         startIndexLetter = findFirst(letterList, arr[indexLet])        if (indexLet < arr.length) {           mainLetter(letter)        }        break      }  }}if (num && num.length>0) {   main(num)  console.log(numArr);}if (letter&&letter.length>0) {   mainLetter(letter)  console.log(letterArr);}

这种方法不好,各位要是有好的方法请告知