1 лайнер RegEx, чтобы найти следующий доступный номер - PullRequest
0 голосов
/ 25 января 2019

Я должен найти первый доступный номер из коллекции строк

У меня есть для каждого цикла, но для завершения каждого требуется, потому что это в рабочем процессе. Рабочий процесс позволяет мне использовать Regex, но должен быть один лайнер. Я пытаюсь найти следующий доступный номер из этой коллекции. Таким образом, в этом примере это будет 73. (Если RegEx не мой вариант, возможно, мне придется использовать Javascript)

'^ (. ?) \ D $'

Я бы ожидал 73 из коллекции ниже

1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22; 23; 24 ; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36; 37; 38; 39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49 ; 50; 51; 52; 53; 54; 55; 56; 57; 58; 59; 60; 61; 62; 63; 64; 65; 66; 67; 68; 69; 70; 71; 72; 75; 76 ; 77; 78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90; 91; 92; +1001; тысяча два; +1003; +1004; +1005; +1006; 1007; 1008; 1009 ; +1010; +1011; 1012; 1013; 1014; 1015; +1016; 1017; 1018; 1 019; 1020; 1 021; тысяча двадцать-дв; +1023; тысяча двадцать-четырь; тысяча двадцать-пять; 1026; 1 027; 1028; 1011 * *

1 Ответ

0 голосов
/ 25 января 2019

Я создал javascript для обработки этого, поскольку RegEx не является опцией

https://jsfiddle.net/8w7opd6a/1/

//var str = "3; -1; 0; 5";
var str = "1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;1001;1002;1003;1004;1005;1006;1007;73;";
function getMissingNumber(str){
  var arr = str.split(/\;/);
  var missingNum = [];
  for(var i=Math.min(...arr); i<Math.max(...arr); i++){
     if(arr.indexOf(i.toString()) === -1){
       missingNum.push(i);
       if(i){
       alert(i);return; }
     }
  }
  return missingNum;
}
console.log(getMissingNumber(str));
//alert(getMissingNumber(str));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...