code: func SortFormKeys(strs []string) {
  	sort.Slice(strs, func(i, j int) bool { // true for first
  		str1 := strs[i]
  		str2 := strs[j]
  		matched1 := replaceIdxRegexp.FindAllStringIndex(str1, -1)
  		matched2 := replaceIdxRegexp.FindAllStringIndex(str2, -1)
  
  		for x := 0; x < len(matched1); x++ {
  			prefix1 := str1[:matched1[x][0]]
  			prefix2 := str2
  
  			if len(matched2) >= x+1 {
  				prefix2 = str2[:matched2[x][0]]
  			}
  
  			if prefix1 != prefix2 {
  				return strings.Compare(prefix1, prefix2) < 0
  			}
  
  			if len(matched2) < x+1 {
  				return false
  			}
  
  			number1 := str1[matched1[x][0]:matched1[x][1]]
  			number2 := str2[matched2[x][0]:matched2[x][1]]
  
  			if number1 != number2 {
  				if len(number1) != len(number2) {
  					return len(number1) < len(number2)
  				}
  				return strings.Compare(number1, number2) < 0
  			}
  		}
  
  		return strings.Compare(str1, str2) < 0
  	})
  }
docs: // SortFormKeys sort form keys