Разделите строку и оставьте разделитель - PullRequest
2 голосов
/ 26 мая 2020

Я делаю Discord Bot с Node.js и Discord. js, и я пытаюсь добиться какого-то считывателя времени, когда пользователь отправляет что-то в этом формате 1h30m, я хочу манипулировать какой-то таймер. Я хочу разделить полученную строку на 1h и 30m, чтобы управлять ими с помощью str.endsWith('').

let str = '1h30m';
if (!(/[^dhms0-9]/ig).test(str)) {
   console.log('RegExp Success.');
   duration = str.split(/[0-9]/);
   console.log(duration);
}

Я сделал условие, которое истинно только тогда, когда оно имеет только числа или любой из буква «д», «ч», «м» и «с» и ничего больше. Он обнаруживает это нормально, но когда я разделяю по числам, я получаю следующий массив:

[ '', 'h', '', 'm' ]

, и я хочу получить

['1h', '30m']

1 Ответ

4 голосов
/ 26 мая 2020

Вы можете сопоставить части, ища цифры, за которыми следует h или m.

let str = '1h30m',
    duration = str.match(/\d+[hm]/gi);
    
console.log(duration);
...