"在 Java-6ren"> "在 Java-虽然任何人都会探索this question ,显而易见的问题是,是否有任何可能匹配的正则表达式 ${foo} 但不是 或 取代那些独立的 ${foo}与 ,这里foo可以是任何字符串,只要 $-6ren">
gpt4 book ai didi

java - 正则表达式匹配和替换 "${foo}"但不是 ""在 Java

转载 作者:行者123 更新时间:2023-12-04 04:53:37 24 4
gpt4 key购买 nike

虽然任何人都会探索this question ,显而易见的问题是,是否有任何可能匹配的正则表达式

${foo}

但不是
<c:if test="${foo}" />


<c:when test="${foo}" />

取代那些独立的 ${foo}<c:out value="${foo}" /> ,这里 foo可以是任何字符串,只要 ${foo}是有效的 el expressionjsp .

编辑:
${foo}可以在任何地方,只要不违反 jsp替换后的语法!这只是预防 XXS attack的预防措施在 jsp的。

最佳答案

说明

这个正则表达式会找到裸 ${foo}不在 <c:.... test="${foo}" /> 内块

正则表达式:(?!("))\$\{[^}]*\}(?!")
替换为 <c:out value="$0" />
enter image description here

输入文本:<c:if test="${foo man chu}" />${foo bar}more text here
输出文本:<c:if test="${foo man chu}" /><c:out value="${foo bar}" />more text here
处理额外的边缘情况 ${foo.bar}可能在`标签内,那么你可能想使用这个正则表达式

正则表达式:(?!("))(\$\{[^}]*\})(?!")|(<a\b[^>]*\bhref=")(\$\{[^}]*\})(")
替换为:$3<c:out value="$1$2$4" />$5
enter image description here

输入文本:<c:if test="${foo man chu}" />${foo bar}more <a href="${foo.name}" />text here
输出文本:<c:if test="${foo man chu}" /><c:out value="${foo bar}" />more <a href="<c:out value="${foo.name}" />" />text here

关于java - 正则表达式匹配和替换 "${foo}"但不是 "<c:if test="${foo }"/>"在 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17071281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com