2016-12-16 62 views
0

我構建表單以創建自定義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 

我怎樣才能做到這一點?我知道我需要使用lookaround來達到解決方案。我爲多行文本嘗試了這樣的^(?<!<%)[\s\S]*(?!%>),但它匹配了整個無效文本。我應該改變什麼?編輯: 爲了清楚起見 - 我使用C#DataAnnotations和RegularExpressionAttribute來驗證我的字符串。這就是爲什麼我需要與我的輸入不匹配的正則表達式。

回答

1

試試這個

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

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

如果C#== JS比你需要的所有.[\s\S]取代。否則只需添加m多行標誌。 m無論如何匹配^到字符串的開頭。

請參閱https://regex101.com/r/L1Q1lf/1

+0

我編輯了我的問題。 我使用C#DataAnnotations和RegularExpressionAttribute來驗證我的字符串。該屬性檢查給定的字符串是否與正則表達式匹配,這就是爲什麼我需要與你的答案相反的東西。 –

+0

下次請使用更多標籤。是C#正則表達式一樣JS? – Fallenhero

+0

是的,這正是我要找的。謝謝! –

相關問題