Мне нужно проверить, действительно ли строка - которая представляет номер страницы; иначе строка должна быть адаптирована, если это возможно.Преобразование и проверка строки, представляющей номера страниц
Действительный номер страницы может быть 12
или 33-40
.
Так что прежде всего я удаляю пробелы, чтобы сделать 33 - 40
также действительным. Также я заменяю специальные тире.
value = value.replace(/\u2013|\u2014/g, '-').replace(/\s+/g, '');
Что-то особенное в том, что вход может быть в формате 530-5
, который должен быть преобразован в 530-535
. 530-41
должен получить 530-541
. Я не знаю, как это сделать.
Далее я бы сделал тест, если есть только цифры или тире. Может быть, это не лучший способ ?!
value = /^[0-9\-]*$/.test(value) ? value : undefined;
Примеры
342 // valid
0 // invalid
12-15 // valid
12-5 // gets 12-15
15-12 // invalid
115-20 // gets 115-120
115 - 20 // gets 115-120
-20 // invalid
[ 'String.prototype.replace (регулярное выражение, функция)'] (https://developer.mozilla.org/en-US/docs/ Web/JavaScript/Reference/Global_Objects/String/replace # Using_an_inline_function_that_modifies_the_matched_characters) – Andreas
@Andreas Извините, не орфографировал – user3142695
Как насчет чего-то такого же смешного, как '100-5-20'? Должен ли быть отклонен или преобразован в «100-105», «100-120», «5-20» или что-то еще? Или даже случай '20-20', должен ли он быть отклонен или преобразован в' 20'? –