在做WEB表單時,為了增加用戶體驗,表單驗證通常是必不可少的。而這樣的效果通常也是通過正則表達式實現(xiàn)。 如果在往前考慮一步,假如用戶自己也能根據(jù)需要修改這些正則表達式,那就更加人性化了。 在做管理系統(tǒng)時,除了數(shù)據(jù)庫,我們用的最多的恐怕就是XML文件了,由于操作簡單,我們喜歡用XML作為模版的 配置文件。這里主要強調在XML中配置正則表達式的寫法,筆者確實走了一些彎路。 因為XML(HTML)中,<,>,&有特殊的意義,(前兩個字符用于鏈接簽,&用于轉義)不能直接使用。 XML CDATA是什么? CDATA部件 在CDATA內部的所有內容都會被解析器忽略。 如果文本內容包含了很多的"<"字符和"&"字符——就像程序代碼一樣,那么最好把他們都放到CDATA部件中. 一個CDATA部件以"<![CDATA["標記開始,以"]]>"標記結束。 于是,正確的寫法 筆者自己也寫了一個簡單的Demo. View ![]() 1 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 2 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4 <html xmlns="http://www./1999/xhtml"> 5 <head runat="server"> 6 <title>后臺獲取配置文件正則表達式</title> 7 <link href="<%=Url.Content("~/Scripts/ext-3.4.0/resources/css/ext-all.css") %>" rel="stylesheet" type="text/css" /> 8 <script src="<%=Url.Content("~/Scripts/ext-3.4.0/adapter/ext/ext-base.js") %>" type="text/javascript"></script> 9 <script src="<%=Url.Content("~/Scripts/ext-3.4.0/ext-all.js") %>" type="text/javascript"></script> 10 <script src="<%=Url.Content("~/Scripts/Widget/CRegular.js") %>" type="text/javascript"></script> 11 12 <script language="javascript" type="text/javascript"> 13 14 Ext.onReady(function () { 15 16 Ext.QuickTips.init(); 17 18 Regular.GetFormPanel(); 19 20 }); 21 22 </script> 23 </head> 24 <body> 25 <div id="form" style="margin: 100px;"> 26 </div> 27 </body> 28 </html> Controller ![]() /// <summary> /// 獲取配置文件中的正則表達式 /// </summary> /// <returns>正則表達式</returns> public JsonResult GetoRegular() { var strRegular = string.Empty; //1.獲取用例字段的XML var oFormFields = XElement.Load(@"E:\201206112300ExMVC項目\Lucky\Lucky\Content\Regular.xml"); //從配置文件獲取正則表達式 var oRegexQuery = from c in oFormFields.Elements("Regular") where c.Attribute("name").Value == "NameValidation" select c; foreach (var oRegex in oRegexQuery) { strRegular = oRegex.Value; } return Json(strRegular, JsonRequestBehavior.AllowGet); } js ![]()
Regular.xml ![]() <?xml version="1.0" encoding="utf-8" ?> <!--1.解決XML配置文件中配置正則表達式的最優(yōu)方案 如果文本內容包含了很多的"<"字符和"&"字符——就像程序 代碼一樣,那么最好把他們都放到CDATA部件中. 一個CDATA部件以"<![CDATA["標記開始,以"]]>"標記結束。 CDATA是通過解析器進行的文本,文本中的標簽不被看作標記。 --> <Regulars> <Regular name="NameValidation"><![CDATA[^[\u4E00-\u9FA5]+$]]></Regular> </Regulars> |
|
來自: univasity > 《編程開發(fā)》