在JavaScript替换操作中合并两个正则表达式的方法求助
合并正则表达式实现单次字符串替换
你当前的代码通过两次replace分别移除转义后的HTML标签和img标签,但可以通过**正则或操作符|**将两个模式合并,实现单次替换。
原代码说明
首先注意原代码里的笔误:reqex2应为regex2。另外,你的regex1其实已经能匹配所有转义后的HTML标签(包括img标签),所以第二次替换是冗余的,但以下方法依然适用于合并任意两个独立的正则模式。
合并正则的实现方法
将两个正则模式用|连接,保留需要的修饰符(这里保留全局匹配g和忽略大小写i),执行一次replace即可完成操作:
var content = `series onPsychologyOutlineHistorySubfields<button type="button" class="mw-collapsible-toggle mw-collapsible-toggle-default" aria-expanded="true" tabindex="0">hide</button>Basic typesAbnormalBehavioralBehavioral geneticsBiologicalCognitive/CognitivismComparativeCross-culturalCulturalDevelopmentalDifferentialEvolutionaryExperimentalMathematicalNeuropsychologyPersonalityPositivePsychodynamicPsychometricsQuantitativeSocial<button type="button" class="mw-collapsible-toggle mw-collapsible-toggle-default" aria-expanded="true" tabindex="0">hide</button>Applied psychologyApplied behavior analysisClinicalCommunityConsumerCounselingCriticalEducationalEnvironmentalErgonomicsFoodForensicHealthHumanisticIndustrial and organizationalLegalMedicalMilitaryMusicOccupational healthPoliticalPsychometricsReligionSchoolSportTraffic<button type="button" class="mw-collapsible-toggle mw-collapsible-toggle-default" aria-expanded="true" tabindex="0">hide</button>ListsDisciplinesOrganizationsPsychologistsPsychotherapiesResearch methodsTheoriesTimelineTopics<img alt="" src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Psi2.svg/16px-Psi2.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Psi2.svg/24px-Psi2.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Psi2.svg/32px-Psi2.svg.png 2x" data-file-width="100" data-file-height="100"> Psychology portalvte<p><b>Psychology</b> is the study of mind and behavior in humans and non-humans. Psychology includes the study of</p>`; // 合并后的正则:用|连接两个模式,保留ig修饰符 var combinedRegex = /<img[^>]*>|<([^>]+)>/ig; // 单次替换完成所有移除操作 content = content.replace(combinedRegex, "");
关键细节解释
|表示“匹配任意一个模式”,正则引擎会优先匹配左侧的模式(如果存在重叠匹配,比如这里img标签同时符合两个模式,左侧的<img[^>]*>会先被匹配,但最终效果和仅使用regex1一致,因为都是替换为空)。- 修饰符
i(忽略大小写)和g(全局匹配)只需在合并后的正则末尾声明一次,无需重复添加。 - 若你的两个正则原本是独立的非重叠模式,这种合并方法能减少一次字符串遍历,提升执行效率。
内容的提问来源于stack exchange,提问作者Krishna
相关产品推荐
相关产品推荐

