const regex = /(?<=\bdestination\s\/\S+\/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:)(?:2[89][0-9]{3}|3[01][0-9]{3}|32[0-6][0-9]{2}|327[0-5][0-9]|6[5-9][0-9]{3}|65[0-4][0-9]{2}|6553[0-5]|(?:22|53|68|323|500|1067|2379|2380|4500|5355|6443|8005|8007|8087|8443|8444|8505|8507|9007|9090|9153|9999|10249|10250|10251|10252|10256|10257|10259|18091|18092|18093|18095|22222|23790|23791|23801|23802))/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?<=\\bdestination\\s\\\/\\S+\\\/\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}:)(?:2[89][0-9]{3}|3[01][0-9]{3}|32[0-6][0-9]{2}|327[0-5][0-9]|6[5-9][0-9]{3}|65[0-4][0-9]{2}|6553[0-5]|(?:22|53|68|323|500|1067|2379|2380|4500|5355|6443|8005|8007|8087|8443|8444|8505|8507|9007|9090|9153|9999|10249|10250|10251|10252|10256|10257|10259|18091|18092|18093|18095|22222|23790|23791|23801|23802))', 'gm')
const str = `
ltm virtual /Common/byoadc-VIP {
description mylistener.byoadc.com
destination /Common/157.109.110.76:28010
ip-protocol tcp
last-modified-time 2023-04-15:13:23:53
mask 255.255.255.255
pool /Common/SSLSUPPORT-POOL
profiles {
/Common/byoadc_2024 {
context clientside
}
/Common/http { }
/Common/tcp { }
}
ltm virtual /Microsoft-Exchange/pool-int-dns-tcp-53 {
destination /Microsoft-Exchange/10.175.99.145:53
ip-protocol tcp
mask 255.255.255.255
pool /Microsoft-Exchange/pool-int-dns-53
profiles {
/Common/tcp { }
}
`;
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