const regex = /(?:^;\s*(?<comment>.+?)\s*$\n)?^\s*(?!;)(?<name>.*?)\s+(?<className>.*?)\s+(?<type>.*?)\s+(?<value>.*?)$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?:^;\\s*(?<comment>.+?)\\s*$\\n)?^\\s*(?!;)(?<name>.*?)\\s+(?<className>.*?)\\s+(?<type>.*?)\\s+(?<value>.*?)$', 'gm')
const str = `
stu IN MX 15 1826300652.mail.outlook.com.
sse IN MX 20 71892d7f2309e64ba6aa36cf20484a.mail.outlook.com.
pridns IN A 202.203.208.33
; 云大电子党建平台
pridns IN AAAA 2001:250:2800:2::33
secdns IN A 202.203.208.34
secdns IN AAAA 2001:250:2800:2::34
_acme-challenge IN TXT oRKINFT0awvpteMfKl--2AKSZWujeeBg0FBudZKsxW0
ynu-public-dns-a IN A 113.55.13.51
ynu-public-dns-a IN AAAA 2001:250:2800::13:51
ynu-public-dns-b IN A 113.55.13.52
ynu-public-dns-b IN AAAA 2001:250:2800::13:52
@ IN A 39.129.5.118
www.sap IN CNAME lb-http-xn
www.sxzx IN CNAME lb-http-xn
; site-cluster IN A 202.203.208.28
;site-cluster IN AAAA 2001:250:2800:2::28
; 云大电子党建平台
www.yddzdjpt IN CNAME lb-http
site-group IN A 202.203.208.4
;site-group IN AAAA 2001:250:2800:2::41
; 站群系统域名统一放在这里
; 站群网站:云南大学工商管理与旅游管理学院
;www.bts IN CNAME site-group
; 档案馆
www.archives IN CNAME site-group
; 未知
www.cas IN CNAME site-group
; 三严三实和忠诚干净担当专题教育
sysshzcgjdd IN CNAME site-group
www.211 IN CNAME site-group
; 云南大学地方政府治理中心网站信息发布
www.lgg IN CNAME site-group
; 站群网站:中国高等教育学会教育信息化分会第六届理事会第二次常务理事会议
; cheia2015 IN CNAME site-group
; 东陆书院
www.dlsy IN CNAME site-group
; 东陆校区综合管理服务中心
www.dlzhfw IN CNAME site-group
; 云南大学党委办公室
www.dwoffice IN CNAME site-group
; 云南大学研究生院
www.grs IN CNAME site-group
; 云南大学艺术与设计学院
www.art IN CNAME site-group
; 云南大学茶马古道文化研究所
; www.chamagudao IN CNAME site-group
; 云南省高校数字媒体技术重点实验室
www.dmtlab IN CNAME site-group
; 云南大学经济学院
www.eco IN CNAME site-group
; 地理环境研究所
www.ger IN CNAME site-group
; 云南大学高等教育研究院
www.hie IN CNAME site-group
; 云南大学基建处 (网站改版0523)
www.jjc IN CNAME site-group
; 国际河流与生态安全研究院
www.ires IN CNAME site-group
; 云南大学现代分析测试中心
www.labct IN CNAME site-group`;
// 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