const regex = /((擅自.*?总额?价?款?|未经.*?赔偿.*?赔偿|未经.*?总价款?|不得.*?赔偿.*?赔偿|将.*?应.*?金额|如?.*?有权.*?总价?款?额?的?|如.*?支付|未经.*?人民币|一方.*?标的额|赔偿.*?损失|未经.*?以赔偿|方.*?以赔偿).*?(?P<m>(百分之|\d+?|.*?)(元|%|[一-龥])).*?(的?违约金|。|方|向.*?支付))|((未经.*?违约金|不得.*?赔偿).*?(?P<m2>(百分之|\d+?|.*?)(元|%|[一-龥])).*?(的?违约金|。|方|向.*?支付))/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('((擅自.*?总额?价?款?|未经.*?赔偿.*?赔偿|未经.*?总价款?|不得.*?赔偿.*?赔偿|将.*?应.*?金额|如?.*?有权.*?总价?款?额?的?|如.*?支付|未经.*?人民币|一方.*?标的额|赔偿.*?损失|未经.*?以赔偿|方.*?以赔偿).*?(?P<m>(百分之|\\d+?|.*?)(元|%|[一-龥])).*?(的?违约金|。|方|向.*?支付))|((未经.*?违约金|不得.*?赔偿).*?(?P<m2>(百分之|\\d+?|.*?)(元|%|[一-龥])).*?(的?违约金|。|方|向.*?支付))', 'gm')
const str = `合同原文
13.5乙方将开发工作擅自转委托的,应支付开发费用总额12%的违约金;并且应立即终止转委托,因此造成第三方包括接受转委托方了解保密信息的,乙方应按照13.8条承担违约责任;
拍卖人违反亲自处理委托事务的义务,未经委托人同意而擅自转委托,因此给委托人造成损失的,拍卖人应对委托人承担赔偿责任,赔偿4000元。
供方如转包合同,一经发现即取消其成交资格,并向需方支付3000元的违约金。
8.9 乙方未经甲方书面同意,将服务转包或者分包给第三人,甲方有权解除合同,乙方应支付甲方合同总价款5%的违约金。
3.乙方未经甲方书面同意将本项目进行转包、分包,或允许第三人以乙方名义进行本合同约定的工作,甲方有权要求乙方支付人民币5000元违约金,并立即将第三人清退出场,已完项目不予结算,且乙方应当对第三人施工质量承担连带责任;同时,甲方有权选择单方解除本合同。
乙方未经甲方同意,将活动全部或者主要承办任务转委托其他第三方承担的,甲方有权要求乙方立即更正并向甲方支付相当于承办总费用金额百分之二十的违约金。
合同一方将其合同权利转让的,该权利转让无效,对本合同他方不产生法律约束力,并视为该方违约,该方应向本合同他方支付相当于本合同标的额10%的违约金。
未经甲方书面许可,乙方不得以任何方式转让本合同权利予第三人,否则,甲方有权终止合同,乙方并同意支付数额为保证金两倍的违约金6000元予甲方。
不得将本合同项下的工程向第三方分包或转包,否则甲方有权单方面终止合同,并有权要求乙方承担相应的经济赔偿责任,赔偿6000元。
乙方擅自转包或分包工程,甲方有权解除合同,乙方除返还已收工程款外,还应向甲方支付工程总价款10%的违约金。
如乙方未经甲方同意,将本协议项下合作项目全部或部分转让予第三方的,甲方有权单方解除合同,并要求乙方赔偿所造成的全部损失5800元。
8.2 未经甲方书面同意,乙方将代理工作转委托第三人,甲方有权解除合同,给甲方造成损失的,乙方应予以赔偿6500元。
监理人将本工程监理业务转包或分包的,应向委托人支付本合同总金额9.8%的违约金。
.未经甲方书面同意,乙方不得将本合同项下的权利、义务转让他人,否则,甲方有权解除合同,乙方应向甲方支付工程总价20%的违约金。
如丙方擅自转包或分包的本项目的,乙方有权解除合同,丙方应承担合同总价5.5%的违约金,丙方还应承担因此造成的经济损失。
9.2.1 未经甲方书面许可,不得转包、分包本工程,否则甲方有权解除合同,有权不予支付任何工程款,并要求乙方支付违约金1万元。
乙方不得将委托业务转包、分包给其他中介机构,如有违反,甲方有权解除合同,不予支付服务费用,并要求乙方进行赔偿5000元。
不允许乙方将本合同工程进行转包,否则视为乙方违约,甲方一经发现,有权立即解除合同,并要求乙方支付本合同总价款6.5%的违约金。
如乙方在履行本合同时发生转包或分包现象,甲方有权要求乙方立即停止,按照合同价款总额的6.35%向甲方支付赔偿逾期汇报违约金;
如乙方在履行本合同时发生转包或分包现象,甲方有权要求乙方立即停止,按照合同价款总额的6.3%向甲方支付赔偿逾期汇报违约金;
`;
// 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