нужна помощь в регулярных выражениях для извлечения шестнадцатеричного значения - PullRequest
0 голосов
/ 21 марта 2019

В этих примерах я хотел бы извлечь значение хеша без :

a=foo:val
a=bar:val
a=hash:sha-256 04:78:88:00:46:C0:A5:00:7A:46:64:12:70:EE:53:13:89:FF:41:9A:DE:21:E3:0D:96:36:E0:7F:0A:92:81:69
a=baz:val

Ожидаем получить:

  • 0478880046C0A5007A46641270EE531389FF419ADE21E30D9636E07F0A928169

Так что он должен найти строку, которая начинается с a=hash:sha-256 и извлечь все шестнадцатеричные значения после этого

Ответы [ 2 ]

2 голосов
/ 21 марта 2019

Вы можете использовать String#match и String#replace для достижения результата.где String#match метод может быть использован для получения строки из строки и String#replace метод для удаления : из строки.

var res = str
        // get the string after sha-256 in capturing group
        .match(/a=hash:sha-256\s+(.*)/)[1]
        // apply replace to remove all :
        .replace(/:/g, '');

var str = `a=foo:val
a=bar:val
a=hash:sha-256 04:78:88:00:46:C0:A5:00:7A:46:64:12:70:EE:53:13:89:FF:41:9A:DE:21:E3:0D:96:36:E0:7F:0A:92:81:69
a=baz:val`;

var res = str.match(/a=hash:sha-256\s+(.*)/)[1].replace(/:/g, '');

console.log(res)
0 голосов
/ 21 марта 2019

Вы можете сделать что-то подобное, используя split и startsWith

let str = `a=foo:val
a=bar:val
a=hash:sha-256 04:78:88:00:46:C0:A5:00:7A:46:64:12:70:EE:53:13:89:FF:41:9A:DE:21:E3:0D:96:36:E0:7F:0A:92:81:69
a=baz:val`;

let output = str.split('\n')
             .find(a => a.startsWith('a=hash:sha-256'))
             .replace(/a=hash:sha-256|:/g, '');

console.log(output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...