如果您有相當數量的客戶端(javascript)和服務器端代碼(C#,vb.net)使用的正則表達式並希望將它們存儲在一個位置以避免重複,你在哪裏存儲它們?ASP.NET,JQuery - 共享正則表達式
我可以使用寄存器並將正則表達式寫成字符串,但只是想知道是否有更優雅的東西。
如果您有相當數量的客戶端(javascript)和服務器端代碼(C#,vb.net)使用的正則表達式並希望將它們存儲在一個位置以避免重複,你在哪裏存儲它們?ASP.NET,JQuery - 共享正則表達式
我可以使用寄存器並將正則表達式寫成字符串,但只是想知道是否有更優雅的東西。
我看了一下上面的兩個解決方案,結果卻做了一些更平淡的事情。 JSON解決方案引起了我的興趣,但我對JSON.NET並不熟悉,有一天我不得不嘗試它,並且我不想將表達式存儲在一個asp.net頁面中,但是正則表達式比較圖表派上用場。
我去了一個簡單的xml文件,我正在使用其他的東西,所以它已經在那裏。
對於服務器端,我使用內置的.NET函數從xml文件中檢索正則表達式,並在客戶端使用jQuery的ajax請求來獲取Javascript中的正則表達式。
$.ajax({
type: "GET",
url: "zzz.xml",
dataType: "xml",
success: parseXml
});
你可以在你的asp.net頁面的將它們存儲爲受保護的變量代碼隱藏,然後使用數據綁定表達式將它們存儲在你的JavaScript公共變量...
在你的ASPX頁面:
<script type="text/javascript">
var regexPhone = new RegExp("<%# regexPhone %>");
var regexEmail = new RegExp("<%# regexEmail %>");
var regexBlah = new RegExp("<%# regexBlah %>");
</script>
在你的後臺代碼:
protected string regexPhone = "put regex string here";
protected string regexEmail = "put regex string here";
protected string regexBlah = "put regex string here";
protected void Page_Load(object sender, EventArgs e)
{
// We need to call DataBind() on the page so that
// we can use databinding expressions
DataBind();
}
雖然我以前沒有嘗試過這個確切的方法,我認爲這是可行:-P讓我知道這是否有助於!
注意:這裏的一個可能的警告是.NET正則表達式風格可能與JavaScript正則表達式風格不同。偉大的Jan Goyvaerts有一個令人印象深刻的comparison chart,這可能會有所幫助。
您可以將它們作爲JSON格式的文件存儲在字典中,並使用它從.NET與 Json.NET。