在做WEB表單時(shí),為了增加用戶體驗(yàn),表單驗(yàn)證通常是必不可少的。而這樣的效果通常也是通過正則表達(dá)式實(shí)現(xiàn)。
如果在往前考慮一步,假如用戶自己也能根據(jù)需要修改這些正則表達(dá)式,那就更加人性化了。
在做管理系統(tǒng)時(shí),除了數(shù)據(jù)庫,我們用的最多的恐怕就是XML文件了,由于操作簡單,我們喜歡用XML作為模版的
配置文件。這里主要強(qiáng)調(diào)在XML中配置正則表達(dá)式的寫法,筆者確實(shí)走了一些彎路。
因?yàn)閄ML(HTML)中,<,>,&有特殊的意義,(前兩個(gè)字符用于鏈接簽,&用于轉(zhuǎn)義)不能直接使用。
XML CDATA是什么?
CDATA部件
在CDATA內(nèi)部的所有內(nèi)容都會(huì)被解析器忽略。
如果文本內(nèi)容包含了很多的"<"字符和"&"字符——就像程序代碼一樣,那么最好把他們都放到CDATA部件中.
一個(gè)CDATA部件以"<![CDATA["標(biāo)記開始,以"]]>"標(biāo)記結(jié)束。
CDATA是通過解析器進(jìn)行的文本,文本中的標(biāo)簽不被看作標(biāo)記。
于是,正確的寫法
筆者自己也寫了一個(gè)簡單的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.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4 <html xmlns="http://www.w3.org/1999/xhtml"> 5 <head runat="server"> 6 <title>后臺(tái)獲取配置文件正則表達(dá)式</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> /// 獲取配置文件中的正則表達(dá)式 /// </summary> /// <returns>正則表達(dá)式</returns> public JsonResult GetoRegular() { var strRegular = string.Empty; //1.獲取用例字段的XML var oFormFields = XElement.Load(@"E:\201206112300ExMVC項(xiàng)目\Lucky\Lucky\Content\Regular.xml"); //從配置文件獲取正則表達(dá)式 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配置文件中配置正則表達(dá)式的最優(yōu)方案如果文本內(nèi)容包含了很多的"<"字符和"&"字符——就像程序代碼一樣,那么最好把他們都放到CDATA部件中.一個(gè)CDATA部件以"<![CDATA["標(biāo)記開始,以"]]>"標(biāo)記結(jié)束。CDATA是通過解析器進(jìn)行的文本,文本中的標(biāo)簽不被看作標(biāo)記。--><Regulars> <Regular name="NameValidation"><![CDATA[^[\u4E00-\u9FA5]+$]]></Regular></Regulars>
聯(lián)系客服