Если я правильно понял ваш вопрос, я думаю, вы хотите просто взять строку, отделить последнее имя каталога и затем использовать его в качестве переменной при настройке вашего zip-файла:
@echo off
set "mypath=C:\TEMP\zip\source\JEAR_20190115"
if "%mypath:~-1%"=="\" set "mypath=%mypath:~0,-1%"
for %%i in (%mypath%) do set "last=%%~nxi"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip
Пожалуйста, примите обратите внимание, если вы измените свой путь, чтобы иметь обратную косую черту на вашем пути, то есть:
C:\TEMP\zip\source\JEAR_20190115\
Вы могли бы сначала избавиться от этого, но мы могли бы просто проверить это с помощью:
[112 ]Таким образом, полный сценарий будет выглядеть следующим образом:
@echo off
set "mypath=C:\TEMP\zip\source\JEAR_20190115"
if "%mypath:~-1%"=="\" set "mypath=%mypath:~0,-1%"
for %%i in (%mypath%) do set "last=%%~nxi"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip
если, однако, если вы хотите присвоить ему имя файла в каталоге, вам необходимо убедиться, что все имена файлов в папке все то же самое, поскольку мы сможем установить его только с одним именем, которое будет последним файлом в списке, мы можем проверить каждое имя, но я предполагаю, что у вас есть файлы с одинаковым именем, но с разными расширениями:
@echo off
set "mypath=C:\TEMP\zip\source\JEAR_20190115"
for /f %%i in ('dir /b /a-d "%mypath%"') do set "last=%%~ni"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip
Регулярные выражения:
var numberPattern = /\d+/g;
'something102asdfkj1948948'.match( numberPattern )
Это вернет объект с двумя элементами внутри: '102' и '1948948' . Действуйте как хотите. Если он не соответствует ни одному, он вернет null.
Предполагая, что вы не имеете дело со сложными десятичными знаками, я полагаю, этого должно быть достаточно.
ПОПРОБУЙТЕ ЭТОГО:
var result = input.match(/\d+/g).join([])
Все, что другие решения имеют, но с небольшой проверкой
// value = '675-805-714'
const validateNumberInput = (value) => {
let numberPattern = /\d+/g
let numbers = value.match(numberPattern)
if (numbers === null) {
return 0
}
return parseInt(numbers.join([]))
}
// 675805714
Вы также можете удалить все нецифровые символы ( \ D
или [^ 0-9]
):
let word_With_Numbers = 'abc123c def4567hij89' пусть word_Without_Numbers = word_With_Numbers.replace (/ \ D / g, ''); console.log (word_Without_Numbers)
Думаю, вы хотите получить число (а) из строки. В этом случае вы можете использовать следующее:
// Returns an array of numbers located in the string
function get_numbers(input) {
return input.match(/[0-9]+/g);
}
var first_test = get_numbers('something102');
var second_test = get_numbers('something102or12');
var third_test = get_numbers('no numbers here!');
alert(first_test); // [102]
alert(second_test); // [102,12]
alert(third_test); // null
Приведенные ответы на самом деле не соответствуют вашему вопросу, что подразумевает завершающее число. Также помните, что вы получаете обратно строку; если вам действительно нужно число, приведите результат:
item=item.replace('^.*\D(\d*)$', '$1');
if (!/^\d+$/.test(item)) throw 'parse error: number not found';
item=Number(item);
Если вы имеете дело с числовыми идентификаторами элементов на веб-странице, ваш код также может с пользой принять элемент
, извлекая число из его id
(или его первого родителя с id
); если у вас под рукой событие
, вы, вероятно, также сможете получить из него элемент
.