簡體   English   中英

匹配不包含標簽對的正則表達式

[英]Match regex that doesn't contain pair of tags

我建立表單以創建自定義WebForms母版頁。 我將使用正則表達式驗證是否將放置在母版頁中的自定義文本不包含<%%>標記以及它們之間的任何文本。 輸入可以有多行。

有效輸入:

function() thisCanBeAlsoJavascript() {
    alert("this is safe");
}

輸入無效:

function() notFunny() {
    alert("I think it's not safe");
    console.log("And this");<% System.Web.HackEverything(); %>

    <%
    Console.WriteLine("This looks dangerous");
    %>
}
Some more text

我怎樣才能做到這一點? 我知道我需要使用環視解決方案。 我為多行文本嘗試了類似^(?<!<%)[\\s\\S]*(?!%>)的方法,但它匹配了整個無效文本。 我應該改變什么?

編輯:為了清楚起見-我使用C#DataAnnotations和RegularExpressionAttribute來驗證我的字符串。 這就是為什么我需要與我的輸入不匹配的正則表達式。

嘗試這個

^(?!.*<%.*%>).*

允許所有不包含<% ... %>

如果c#== js,則需要替換all . [\\s\\S] 否則,只需為多行添加m標志。 無論如何, m需要將^匹配到字符串的開頭。

參見https://regex101.com/r/L1Q1lf/1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM