如果我在这里发布第一个问题时犯了一些错误,请原谅。
我在使用javascript lodash模板时遇到了问题。 我试图重写regex for evaluate delimiter,因此它可以接受两种类型的分隔符并将其捕获为一个组。
首先我尝试了两组做两组
/<%([\s\S]+?)%>|{{([\s\S]+?)}}/
但我最终获得两组,然后我尝试了
/(?:<%|{{)([\s\S]+?)(?:%>|}})/
它工作并捕获了两个组作为一个,但它适用于一些不应该工作的情况 例如:
<%
text1
%> //should work
{{ text2 }} //should work
<% text2 }} // shouldn't work
是否有一种方法可以匹配几个分隔符但只捕获一个组?
答案 0 :(得分:0)
答案 1 :(得分:0)
你可以通过前瞻来实现这一目标:
const regex = /(?:<%(?=.*%>)|{{(?=.*}}))(.+)(?:}}|%>)/
console.log(regex.test('<% Hello World %>')) // true
console.log(regex.test('{{ Hello World }}')) // true
console.log(regex.test('<% Hello World }}')) // false
console.log(regex.test('{{ Hello World %>')) // false