const regex = /(-----BEGIN PUBLIC KEY-----(\n|\r|\r\n)([0-9a-zA-Z\+\/=]{64}(\n|\r|\r\n))*([0-9a-zA-Z\+\/=]{1,63}(\n|\r|\r\n))?-----END PUBLIC KEY-----)|(-----BEGIN PRIVATE KEY-----(\n|\r|\r\n)([0-9a-zA-Z\+\/=]{64}(\n|\r|\r\n))*([0-9a-zA-Z\+\/=]{1,63}(\n|\r|\r\n))?-----END PRIVATE KEY-----)/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(-----BEGIN PUBLIC KEY-----(\\n|\\r|\\r\\n)([0-9a-zA-Z\\+\\\/=]{64}(\\n|\\r|\\r\\n))*([0-9a-zA-Z\\+\\\/=]{1,63}(\\n|\\r|\\r\\n))?-----END PUBLIC KEY-----)|(-----BEGIN PRIVATE KEY-----(\\n|\\r|\\r\\n)([0-9a-zA-Z\\+\\\/=]{64}(\\n|\\r|\\r\\n))*([0-9a-zA-Z\\+\\\/=]{1,63}(\\n|\\r|\\r\\n))?-----END PRIVATE KEY-----)', 'gm')
const str = `-----BEGIN PRIVATE KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwghnvMu5YfnbprpLX105
SGuanX7zF+4mgNqozyFB7UsIha3ztQIYydrLc7pKXK7vQWWlqLUn0JW1vlAiTs2A
O+wdaFaEwKTNk1+mobGlpKUrzJEy24cnGV9XxNnh+WuxR7TicEpzNOdmDnSUaFMk
MdfpDXKKXfu/HJrADYuMq7VckEBR1yOBXVREDYpS8YvA85Kw04VAPVzxOHU7qdTR
hUPUD1rY3nKYJj33P0EW1e53xqeXZiiW6p3yi04X+OQscylMnfvxsG8tK18Qgi30
cQmny3yYGocKpfG7679Jy5EnkchqoC9L72Ust8A6s0WZVAe/bZxs5J5QEDdAkgAi
Miw84vWIHj2cuwgNKzBJHZ1uHmFrM8rkJWBvLyTRvS1pgn/yjQ4evOTH/yVTGnyM
BOSwrXmFbt4KXzXwtXIf0wllf2HZ3CwhB9g86ijPjvvgXn8eUbBEN12c/MePf3l1
doECe6oavsthqpk77IuFC6Yuy5ck0fkcHT2cw/U6hUBdTbuXs4/i7gMLE9VpjiDh
lYoMCYmuCR8Vn/G5gMQ4NbMjyvZY/d5U8tvktsC2ImQefuWu8vi/PGvDIdhq3TTz
sswoxcLxyqq0vjOnBmpMpua2PpLlZrSuBkuKIuZnxAiRkkLamAVH6SylYwmWvvam
ssssss1
-----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwghnvMu5YfnbprpLX105
SGuanX7zF+4mgNqozyFB7UsIha3ztQIYydrLc7pKXK7vQWWlqLUn0JW1vlAiTs2A
O+wdaFaEwKTNk1+mobGlpKUrzJEy24cnGV9XxNnh+WuxR7TicEpzNOdmDnSUaFMk
MdfpDXKKXfu/HJrADYuMq7VckEBR1yOBXVREDYpS8YvA85Kw04VAPVzxOHU7qdTR
hUPUD1rY3nKYJj33P0EW1e53xqeXZiiW6p3yi04X+OQscylMnfvxsG8tK18Qgi30
cQmny3yYGocKpfG7679Jy5EnkchqoC9L72Ust8A6s0WZVAe/bZxs5J5QEDdAkgAi
Miw84vWIHj2cuwgNKzBJHZ1uHmFrM8rkJWBvLyTRvS1pgn/yjQ4evOTH/yVTGnyM
BOSwrXmFbt4KXzXwtXIf0wllf2HZ3CwhB9g86ijPjvvgXn8eUbBEN12c/MePf3l1
doECe6oavsthqpk77IuFC6Yuy5ck0fkcHT2cw/U6hUBdTbuXs4/i7gMLE9VpjiDh
lYoMCYmuCR8Vn/G5gMQ4NbMjyvZY/d5U8tvktsC2ImQefuWu8vi/PGvDIdhq3TTz
sswoxcLxyqq0vjOnBmpMpua2PpLlZrSuBkuKIuZnxAiRkkLamAVH6SylYwmWvvam
ssssssqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqs
-----END PUBLIC KEY-----`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions