<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java之旅
    Record my Java-learning progress.
    posts - 1,comments - 17,trackbacks - 0

    PermGen space的全稱是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域OutOfMemoryError: PermGen space從表面上看就是內(nèi)存益出,解決方法也一定是加大內(nèi)存。說說為什么會內(nèi)存益出:這一部分用于存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區(qū)域,它和和存放Instance的Heap區(qū)域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現(xiàn)PermGen space錯誤。這種錯誤常見在web服務(wù)器對JSP進行pre compile的時候。

    改正方法,在 run.bat 中加入:-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

    因為項目中引用了很多的 jar 包,而這些 jar 包中的 class 信息會被 JBoss 的 class loader 加載到 PermGen space 區(qū)域,在 JVM 默認(rèn)的情況下,該部分空間的大小只有 4M,在 jar 包非常多的情況下,顯然是不夠用的,所以通過 -XX:MaxPermSize=256m 指定最大值后即可解決問題。

    另外,如果 heap 內(nèi)存不足出現(xiàn) java.lang.OutOfMemoryError: Java heap space 時,可以通過 -Xmx512m 指定最大 heap 內(nèi)存來解決這樣的問題。

    posted @ 2011-07-22 11:47 胡昆栄 閱讀(178) | 評論 (0)編輯 收藏

    1.Collada類:簡便,但不支持骨骼等動畫信息,適合導(dǎo)入靜止的場景模型。

    import org.papervision3d.objects.parsers.Collada; //引用的Collada包

    private var carcollada:Collada;//聲明Collada為carcollada

    var carcollada
    =new Collada("模型.XML或dae");//導(dǎo)入外部模型文件
    carcollada.addEventListener(FileLoadEvent.LOAD_COMPLETE, 完成后該怎么辦的方法);


    2.Dae類:聲明多幾步,讀取慢一點,支持骨骼動畫等,而且還在不斷添加新的功能。

    import org.papervision3d.objects.parsers.DAE;//引用的DAE包

    private var cardae:DAE=new DAE(true);//聲明DAE為cardae

    cardae.load(
    "模型.XML或dae");//導(dǎo)入外部模型文件
    posted @ 2010-04-10 01:59 胡昆栄 閱讀(884) | 評論 (0)編輯 收藏
    今天在研究Flex的時候,從CVS取下的Source報以下錯誤:
    調(diào)用可能未定義的方法 load (通過 static 類型 flash.net:FileReference 引用)。
    訪問可能未定義的屬性 data (通過 static 類型 flash.net:FileReference 引用)。

    查了API后,發(fā)現(xiàn)官方API與本地API對不起來,于是把FlexBuilder升級更新到3.0.2后,此問題解決。
    posted @ 2010-02-02 10:21 胡昆栄 閱讀(3005) | 評論 (0)編輯 收藏

    使用Flex中的Tree控件時候,你可能很不喜歡它默認(rèn)的外觀。那個尖尖的箭頭和節(jié)點前面丑陋的圖標(biāo)很難看。如果需要改變它,可以使用下面幾個屬性:

    • disclosureClosedIcon
    • disclosureOpenIcon
    • folderClosedIcon
    • folderOpenIcon
    • defaultLeafIcon
    posted @ 2010-01-06 10:01 胡昆栄 閱讀(540) | 評論 (0)編輯 收藏
    //java 通過System.getProperties()獲取系統(tǒng)參數(shù)

       Properties props
    =System.getProperties(); //系統(tǒng)屬性
       System.out.println("Java的運行環(huán)境版本:"+props.getProperty("java.version"));
       System.out.println(
    "Java的運行環(huán)境供應(yīng)商:"+props.getProperty("java.vendor"));
       System.out.println(
    "Java供應(yīng)商的URL:"+props.getProperty("java.vendor.url"));
       System.out.println(
    "Java的安裝路徑:"+props.getProperty("java.home"));
       System.out.println(
    "Java的虛擬機規(guī)范版本:"+props.getProperty("java.vm.specification.version"));
       System.out.println(
    "Java的虛擬機規(guī)范供應(yīng)商:"+props.getProperty("java.vm.specification.vendor"));
       System.out.println(
    "Java的虛擬機規(guī)范名稱:"+props.getProperty("java.vm.specification.name"));
       System.out.println(
    "Java的虛擬機實現(xiàn)版本:"+props.getProperty("java.vm.version"));
       System.out.println(
    "Java的虛擬機實現(xiàn)供應(yīng)商:"+props.getProperty("java.vm.vendor"));
       System.out.println(
    "Java的虛擬機實現(xiàn)名稱:"+props.getProperty("java.vm.name"));
       System.out.println(
    "Java運行時環(huán)境規(guī)范版本:"+props.getProperty("java.specification.version"));
       System.out.println(
    "Java運行時環(huán)境規(guī)范供應(yīng)商:"+props.getProperty("java.specification.vender"));
       System.out.println(
    "Java運行時環(huán)境規(guī)范名稱:"+props.getProperty("java.specification.name"));
       System.out.println(
    "Java的類格式版本號:"+props.getProperty("java.class.version"));
       System.out.println(
    "Java的類路徑:"+props.getProperty("java.class.path"));
       System.out.println(
    "加載庫時搜索的路徑列表:"+props.getProperty("java.library.path"));
       System.out.println(
    "默認(rèn)的臨時文件路徑:"+props.getProperty("java.io.tmpdir"));
       System.out.println(
    "一個或多個擴展目錄的路徑:"+props.getProperty("java.ext.dirs"));
       System.out.println(
    "操作系統(tǒng)的名稱:"+props.getProperty("os.name"));
       System.out.println(
    "操作系統(tǒng)的構(gòu)架:"+props.getProperty("os.arch"));
       System.out.println(
    "操作系統(tǒng)的版本:"+props.getProperty("os.version"));
       System.out.println(
    "文件分隔符:"+props.getProperty("file.separator"));   //在 unix 系統(tǒng)中是"/"
       System.out.println("路徑分隔符:"+props.getProperty("path.separator"));   //在 unix 系統(tǒng)中是":"
       System.out.println("行分隔符:"+props.getProperty("line.separator"));   //在 unix 系統(tǒng)中是"/n"
       System.out.println("用戶的賬戶名稱:"+props.getProperty("user.name"));
       System.out.println(
    "用戶的主目錄:"+props.getProperty("user.home"));
       System.out.println(
    "用戶的當(dāng)前工作目錄:"+props.getProperty("user.dir"));
    posted @ 2009-12-10 22:14 胡昆栄 閱讀(164) | 評論 (0)編輯 收藏
    916688 http://support.microsoft.com/kb/916688/) 修復(fù): 在Windows 2000上使用與Visual Studio 2005集成的Visual SourceSafe 2005 局域網(wǎng)加速服務(wù) 時出現(xiàn)的錯誤消息:“無法使用SourceSafe 局域網(wǎng)服務(wù)”

    917491 http://support.microsoft.com/kb/917491/) 修復(fù): 使用– d 參數(shù),Analyze.exe 實用工具可能會錯誤地移除Visual SourceSafe 2005中的文件和工程。

    925234 http://support.microsoft.com/kb/925234/) 修復(fù):可能無法打開或簽出一個用Visual SourceSafe 2005簽入的PDF文件。

    927004 http://support.microsoft.com/kb/927004/) 修復(fù): 在Visual SourceSafe 2005中對一個文件執(zhí)行合并操作后,最多僅有3個帳號可以訪問合并后的文件。

    923842 http://support.microsoft.com/kb/923842/) 修復(fù): 當(dāng)在Visual SourceSafe 2005中使用 Analyze.exe 實用工具時,Analyze.log 文件中的錯誤消息: "文件 0\DATA\\ 不是一個有效的 SourceSafe 物理數(shù)據(jù)庫文件" 

    923434 http://support.microsoft.com/kb/923434/) 修復(fù):用Visual SourceSafe 2005簽入后的PDF文件會出錯損壞。

    924702 http://support.microsoft.com/kb/924702/) 修復(fù):在Visual SourceSafe 2005中把文件類型改成了UTF8后,你不能對一個文件的最新版本與它的任何早期版本進行比較。

    925275 http://support.microsoft.com/kb/925275/) 修復(fù):當(dāng)你生成一個源文件的歷史報告時, Visual SourceSafe 2005 可能會意外終止

    928392 http://support.microsoft.com/kb/928392/) 修復(fù):當(dāng)你在Visual SourceSafe 6.0嘗試簽入一個有注釋模板,且注釋模板超過3行的文件時出現(xiàn)的錯誤消息: "讀文件錯誤" 

    927887 http://support.microsoft.com/kb/927887/) 修復(fù):當(dāng)你在 Visual SourceSafe 2005 中用獲取最新版本項去嘗試獲取一個最新版的XML文件時出現(xiàn)的的錯誤消息: "SourceSafe 沒能完成寫文件" 


    930573 http://support.microsoft.com/kb/930573/) 修復(fù):當(dāng)你在 "顯示歷史" 對話框中生成一個報告時Visual SourceSafe 2005 可能會停止響應(yīng)

    932058 http://support.microsoft.com/kb/932058/) 修復(fù): 當(dāng)你嘗試把IVSSItem.AutoDetectEncoding 屬性的值設(shè)為 "false"時, 如果此項目被 Visual SourceSafe 2005簽出,將出現(xiàn)錯誤消息: "System.Runtime.InteropServices.COMException (0x8004D67F)" 

    934723 http://support.microsoft.com/kb/934723/) 修復(fù): 在Visual SourceSafe 2005中使用 Get 命令取得一個文件的指定歷史版本時,可能會收到一個錯誤消息。

    932874 http://support.microsoft.com/kb/932874/) 修復(fù): 當(dāng)你簽入一個大的二進制文件時,Visual SourceSafe 2005可能會停止響應(yīng) (掛起)

    轉(zhuǎn)載請注明源自www.SCMLife.com,請保留版權(quán).
    posted @ 2009-10-30 13:59 胡昆栄 閱讀(1057) | 評論 (0)編輯 收藏
    1377-4167-5844-4698-0048-5821
    posted @ 2009-04-16 00:50 胡昆栄 閱讀(947) | 評論 (0)編輯 收藏

    預(yù)定義的集合元字符

    使用目前提供的工具可以完成很多工作。但是,要使用 [0-9] 表示模式中的每個數(shù)值數(shù)字,或(更糟)使用 [0 -9a -zA-Z]表示任何字母數(shù)字字符,還有一段相當(dāng)漫長的過程。為了減輕處理這些常用但冗長模式的痛苦,事先定義了預(yù)定義元字符集合。正則表達(dá)式的不同實現(xiàn)定義了不同的預(yù)定義元字符集合,下面描述的預(yù)定義元字符集合在 .NET Framework 中得到 System.Text.RegularExpressions API 的支持。這些預(yù)定義元字符的標(biāo)準(zhǔn)語法是,在反斜杠 \ 后跟一個或多個字符。多數(shù)預(yù)定義元字符只有一個字符,它們的使用很容易,是冗長字符類的理想替代字符。以下是兩個示例:\d 匹配所有數(shù)值數(shù)字,\w 匹配所有單詞字符(字母數(shù)字加下劃線)。例外情況是一些特定字符代碼匹配,此時必須指定所匹配字符的地址,如 \u000D 將匹配 Unicode 回車符。下面列出一些最常用的字符類及其等效的元字符。

    元字符

    等效字符類

    \a

    匹配鈴聲(警報);\u0007

    \b

    匹配字符類外的字邊界,它匹配退格字符,\u0008

    \t

    匹配制表符,\u0009

    \r

    匹配回車符,\u000D

    \w

    匹配垂直制表符,\u000B

    \f

    匹配換頁符,\u000C

    \n

    匹配新行,\u000A

    \e

    匹配轉(zhuǎn)義符,\u001B

    \040

    匹配 3 位 8 進制 ASCII 字符。\040 表示空格(十進制數(shù) 32)。

    \x20

    使用 2 位 16 進制數(shù)匹配 ASCII 字符。此例中,\x2- 表示空格。

    \cC

    匹配 ASCII 控制字符,此例中是 ctrl-C。

    \u0020

    使用 4 位 16 進制數(shù)匹配 Unicode 字符。此例中 \u0020 是空格。

    \*

    不代表預(yù)定義字符類的任意字符都只作為該字符本身對待。因此,\* 等同于 \x 2A(是文字 *,不是 * 元字符)。

    \p{name}

    匹配已命名字符類“name”中的任意字符。支持名稱是 Unicode 組和塊范圍。例如,Ll、Nd、Z、IsGreek、IsBoxDrawing 和 Sc(貨幣)。

    \p{name}

    匹配已命名字符類“name”中不包括的文本。

    \w

    匹配任意單詞字符。對于非 Unicode 和 ECMAScript 實現(xiàn),這等同于 [a-zA-Z_0-9]。在 Unicode 類別中,這等同于 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]。

    \W

    \w 的否定,等效于 ECMAScript 兼容集合 [^a-zA-Z_0-9] 或 Unicode 字符類別 [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]。

    \s

    匹配任意空白區(qū)域字符。等效于 Unicode 字符類 [\f\n\r\t\v\x85\p{Z}]。如果使用 ECMAScript 選項指定 ECMAScript 兼容方式,\s 等效于 [ \f\n\r\t\v] (請注意前導(dǎo)空格)。

    \S

    匹配任意非空白區(qū)域字符。等效于 Unicode 字符類別 [^\f\n\r\t\v\x85\p{Z}]。如果使用 ECMAScript 選項指定 ECMAScript 兼容方式,\S 等效于 [^ \f\n\r\t\v] (請注意 ^ 后的空格)。

    \d

    匹配任意十進制數(shù)字。在 ECMAScript 方式下,等效于 Unicode 的 [\p{Nd}]、非 Unicode 的 [0-9]

    \D

    匹配任意非十進制數(shù)字。在 ECMAScript 方式下,等效于 Unicode 的 [\p{Nd}]、非 Unicode 的 [^0-9]。

    返回頁首

    表達(dá)式示例

    很多人都喜歡通過示例學(xué)習(xí),下面即提供一些表達(dá)式示例。要獲取更多示例,請訪問以下地址中的正則表達(dá)式聯(lián)機數(shù)據(jù)庫:http://www.regexlib.com/

    模式

    說明

    ^\d{5}$

    5 個數(shù)值數(shù)字,如美國郵政編碼。

    ^(\d{5})|(\d{5}-\d{4}$

    5 個數(shù)值數(shù)字或 5 個數(shù)字-短劃線-4 個數(shù)字。匹配 5 位數(shù)字格式的美國郵政編碼,或 5 位數(shù)字 + 4 位數(shù)字格式的美國郵政編碼。

    ^(\d{5}(-\d{4})?$

    與前一個相同,但更有效。使用 ? 可使模式中的 4 位數(shù)字成為可選部分,而不是要求分別比較不同的兩個模式(通過另一種方式)。

    ^[+-]?\d+(\.\d+)?$

    匹配任意有可選符號的實數(shù)。

    ^[+-]?\d*\.?\d*$

    與上一個相同,但也匹配空字符串。

    ^(20|21|22|23|[01]\d)[0-5]\d$

    匹配 24 小時制時間值。

    /\*.*\*/

    匹配 C 語言風(fēng)格的注釋 /* ... */

    返回頁首

    ASP.NET 中的驗證

    ASP.NET 提供了一套驗證控件,與使用舊的(或愿意的話使用傳統(tǒng)的) ASP 處理任務(wù)相比,驗證控件使在 Web 窗體上驗證輸入變得非常容易。其中一個非常有效的驗證器是 RegularExpressionValidator,如您所料,它允許您提供必須匹配輸入的正則表達(dá)式來驗證輸入。設(shè)置控件的 ValidationExpression 屬性可指定正則表達(dá)式的模式。下面顯示了驗證郵政代碼字段的驗證程序:

    <asp:RegularExpressionValidator runat="server" id="ZipCodeValidator"
    ControlToValidate="ZipCodeTextBox" ErrorMessage="Invalid ZIP code
    format; format should be either 12345 or 12345-6789."
    ValidationExpression="(\d{5}(-\d{4})?" />

    使用 RegularExpressionValidator 要注意幾個問題:

    • 決不要使用驗證程序要驗證的控件中的空字符串來激活驗證器。只有 RequiredFieldValidator 才可以捕獲空字符串。

    • 您無需指定匹配字符的開始與結(jié)尾(^$)- 它們是事先假設(shè)的。如果添加了開始與結(jié)尾,也沒有任何影響,不需要這樣做。

    • 對于所有驗證控件來說,必須在客戶端以及服務(wù)器端進行驗證。如果正則表達(dá)式不是 ECMAScript 兼容方式,客戶端驗證將失敗。為了避免這種情況,確保表達(dá)式是 ECMAScript 兼容方式,否則只在服務(wù)器端進行控件驗證。

    返回頁首

    正則表達(dá)式 API

    除了 ASP.NET 驗證控件,在.NET 中使用正則表達(dá)式的大多數(shù)情況都要使用 System.Text.RegularExpressions 命名空間中發(fā)現(xiàn)的類。特別是那些您希望熟悉的主類 Regex、MatchMatchCollection。

    順便說一下,正則表達(dá)式縮寫樣式 regex 的發(fā)音究竟是 /reg-eks/ 還是 /rej-eks/,還有一些爭議。本人傾向于后者,但兩種發(fā)音都有專家贊同,所以選擇哪個發(fā)音由您自己決定。

    Regex 類有大量的方法和屬性,如果您以前沒有用過它,可能會感到無所適從。下面匯總了一些最常用的方法:

    方法

    說明

    Escape / Unescape

    字符串中的轉(zhuǎn)義元字符,用作表達(dá)式中的文字。

    IsMatch

    如果正則表達(dá)式在輸入字符串中發(fā)現(xiàn)匹配,返回“Ture”。

    Match

    如果在輸入字符串中發(fā)現(xiàn)匹配,則返回匹配對象。

    Matches

    如果在輸入字符串中發(fā)現(xiàn)包含任何或全部匹配,則返回匹配集合對象。

    Replace

    用給定的替換字符串替換輸入字符串中的匹配。

    Split

    將輸入字符串拆分成用正則表達(dá)式匹配分開的數(shù)組元素時,返回數(shù)組字符串。

    除了指定很多方法外,還有一些選項可以指定,通常在 Regex 對象構(gòu)造函數(shù)中。由于這些選項是位屏蔽的一部分,或許可以同時指定這些選項(如,可以同時指定 Multiline 和 Singleline)。

    方法

    說明

    Compiled

    當(dāng)在循環(huán)中執(zhí)行許多匹配操作時使用此選項。這可以節(jié)省每一循環(huán)的分析表達(dá)式步驟。

    Multiline

    它與輸入字符串中的行數(shù)沒有關(guān)系。確切地說,它只修改 ^$ 的方式,以便匹配行開始 (BOL) 和行結(jié)尾 (EOL),而不是匹配整個輸入字符串的開始和結(jié)尾。

    IgnoreCase

    使模式在匹配搜索字符串時忽略大小寫。

    IgnorePatternWhitespace

    允許根據(jù)需要在模式中包括任意數(shù)量的空白區(qū)域,也支持使用 (?# 注釋 #) 語法在模式中加入注釋。

    SingleLine

    它與輸入字符串中的行數(shù)沒有關(guān)系。更確切地說,它將導(dǎo)致 .(句點)元字符匹配任意字符,而不是除 \n 之外的任意字符(默認(rèn)情況)。

    使用正則表達(dá)式常執(zhí)行的操作包括:驗證、匹配和替換。大多數(shù)情況下,可以使用 Regex 類的靜態(tài)方法完成這些操作,不需要實例化 Regex 類本身。要執(zhí)行驗證,全部要做的就是必建或找到正確的表達(dá)式,然后使用 Regex 類的 IsMatch() 方法將表達(dá)式應(yīng)用到輸入字符串中。例如,下面的函數(shù)演示了如何使用正則表達(dá)式驗證郵政編碼:

    private void ValidateZipButton_Click(object sender, System.EventArgs e)
    {
    String ZipRegex = @"^\d{5}$";
    if(Regex.IsMatch(ZipTextBox.Text, ZipRegex))
    {
    ResultLabel.Text = "ZIP is valid!";
    }
    else
    {
    ResultLabel.Text = "ZIP is invalid!";
    }
    }

    類似的,可以使用靜態(tài) Replace() 方法將匹配替換為特定字符串,如下所示:

    String newText = Regex.Replace(inputString, pattern, replacementText);

    最后,可以使用如下代碼遍歷輸入字符串的匹配集合:

    private void MatchButton_Click(object sender, System.EventArgs e)
    {
    MatchCollection matches = Regex.Matches(SearchStringTextBox.Text,
    MatchExpressionTextBox.Text);
    MatchCountLabel.Text = matches.Count.ToString();
    MatchesLabel.Text = "";
    foreach(Match match in matches)
    {
    MatchesLabel.Text += "Found" + match.ToString() + " at
    position " + match.Index + ".<br>";
    }
    }

    通常,在您需要指定默認(rèn)方式以外的方式時,需要實例化 Regex 類的實例。特別是在設(shè)置選項時。例如,要創(chuàng)建忽略大小寫和模式空白區(qū)域的 Regex 實例,然后檢索與該表達(dá)式匹配的集合,則應(yīng)使用如下代碼:

    Regex re = new Regex(pattern,
        RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
    MatchCollection mc = re.Matches(inputString);

    本文的下載文件中包括這些示例的完整使用版本,與簡單 ASP.NET 頁中的一樣。

    返回頁首

    免費工具

    Regulator (http://royo.is-a-geek.com/iserializable/regulator/) - 一種在客戶端運行的正則表達(dá)式測試工具,通過 Web 服務(wù)與 RegexLib 緊密集成,提供對“匹配”、“拆分”和“替換”等的支持。包括性能分析和語法突出顯示功能。

    RegexDesigner.NET (http://www.sellsbrothers.com/tools/) - 一種功能強大的可視工具,可幫助構(gòu)造并測試正則表達(dá)式。它可生成 C# 和/或 VB.NET 代碼和已編譯匯編代碼,幫助您將表達(dá)式集成到應(yīng)用程序中。

    Regular Expression Workbench (v2.0) (http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=C712F2DF-B026-4D58-8961-4EE2729D7322) - Eric Gunnerson 開發(fā)的工具,用于創(chuàng)建、測試和研究正則表達(dá)式。具有“Examine-o-matic”功能,允許將鼠標(biāo)懸停在正則表達(dá)式的上方,對其含義進行解碼。

    返回頁首

    高級主題

    正則表達(dá)式有兩個不得不說的功能,一個是“命名組”,另一個是“四向處理”(lookaround processing)。由于這些功能很少使用,此處只簡單闡述一下。

    使用命名組,您可單獨命名匹配組,然后在表達(dá)式中使用程序語言引用這些組。如果結(jié)合 Replace 方法重新設(shè)置輸入字符串的格式(通過重新排列順序、替換輸入字符串中的元素),這個功能特別有效。例如,假設(shè)日期使用 MM/DD/YYYY 格式的字符串,而您希望日期格式是 DD-MM-YYYY。此時,可編寫一個表達(dá)式捕獲第一種格式,遍歷它的匹配集合,并分析每個字符串,然后使用字符串操作建立替換字符串。這需要大量的代碼和大量的處理。如果使用命名組,您可完成同樣的任務(wù),具體見下:

    String MDYToDMY(String input)
    {
    return Regex.Replace(intput, @"\b(?<month>\d{1,2})/(?<day>\d{1,2}/(?<year>\d{4})\b", "${day}-
    ${month}-${year}");
    }

    您還可以按編號或按名稱引用組。在任何情況下,這種引用通稱作“反向引用”。另一個經(jīng)常使用反向引用的場合在匹配表達(dá)式本身,如下這個表達(dá)式用于查找重復(fù)的字母:[a-z]\1。它將匹配“aa”、“bb”、“cc”,但它不同于 [a-z]{2}[a-z][a-z],后兩者是等效的,后兩者允許匹配“ab”或“ac”或任何其他兩個字母的組合。反向引用允許表達(dá)式記住表達(dá)式已經(jīng)分析并匹配過的輸入字符串中的部分字符。

    “四向處理”指很多正則表達(dá)式引擎所支持的正負(fù) Lookahead 和 Lookbehind 功能。并不是所有的正則表達(dá)式引擎都支持驗證四向處理。這些構(gòu)造不使用字符,即使它們可以匹配字符。有些模式可能在不使用四向處理的情況下無法描述。特別是當(dāng)模式中存在的一部分依賴于另一部分,如果不使用四向處理,則不能描述這樣的模式。下面介紹了每個四向處理的語法。

    語法

    說明

    (?=...)

    正 Lookahead

    (?!...)

    負(fù) Lookahead

    (?<=...)

    正 Lookbehind

    (?<!...)

    負(fù) Lookbehind

    密碼驗證是必需四向處理的一個示例。假定在密碼限制中,密碼必須介于 4 到 8 個字符,且必須至少包含一個數(shù)字。為此,您可以僅在匹配中測試 \d,然后使用字符串操作來測試長度。但要在正則表達(dá)式中實現(xiàn)這一切,必須使用 Lookahead。特別是正 lookahead,如下所示:^(?=.*\d).{4,8}$

    返回頁首

    結(jié)論

    正則表達(dá)式是一種描述文本模式的極有效方法,它使文本模式成為字符串驗證和操作的極好資源。.NET Framework 通過 System.Text.RegularExpressions 命名空間(特別是其中的 Regex 類)提供了對正則表達(dá)式的強大支持。使用 API 很簡單,但編寫正確的正則表達(dá)式通常比較費力。但幸運的是,正則表達(dá)式可以重復(fù)使用,您可以通過網(wǎng)絡(luò)中的各種聯(lián)機資源,從中找出其他人設(shè)計的表達(dá)式,或者在創(chuàng)建表達(dá)式遇到困難時得到幫助。

    返回頁首

    資源

    正則表達(dá)式庫 http://www.regexlib.com/

    正則表達(dá)式討論列表 http://aspadvice.com/login.aspx?ReturnUrl=%2fSignUp%2flist.aspx%3fl%3d68%26c%3d16&l=68&c=16

    正則表達(dá)式論壇 http://forums.regexadvice.com/

    正則表達(dá)式 Web 日志 http://blogs.regexadvice.com/

    Mastering Regular Expressions (O'Reilly),作者 Jeffrey Friedl http://www.regex.info/

    .NET 正則表達(dá)式參考 http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemTextRegularExpressions.asp

    Jscript 正則表達(dá)式語法 http://www.msdn.microsoft.com/library/en-us/script56/html/js56jsgrpRegExpSyntax.asp

    正則表達(dá)式信息 http://www.regular-expressions.info/

    作者簡介

    Steven A. Smith 是 Microsoft 在 ASP.NET 技術(shù)方面的最有價值專家 (MVP),是 ASPAlliance.com 和 DevAdvice.com 的總裁和所有者。此外,他也是 ASPSmith Ltd(一家重點提供 .NET 培訓(xùn)的公司)的所有者和首席教師。他撰寫了兩本著作:“ASP.NET Developer's Cookbook”和“ASP.NET By Example”,并在 MSDN 和 AspNetPRO 雜志上發(fā)表了一些文章。Steve 每年都在各種會議上發(fā)表演講,是 INETA 聯(lián)絡(luò)處的成員。Steve 擁有企業(yè)管理碩士學(xué)位及計算機科學(xué)工程理學(xué)士學(xué)位。

    posted @ 2008-07-10 14:29 胡昆栄 閱讀(637) | 評論 (0)編輯 收藏

    <OBJECT   id=WebBrowser   classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2   height=0   width=0></OBJECT>   
      
    <input   type=button   value=打印           onclick=document.all.WebBrowser.ExecWB(6,1)>   
      
    <input   type=button   value=直接打印   onclick=document.all.WebBrowser.ExecWB(6,6)>   
      
    <input   type=button   value=頁面設(shè)置   onclick=document.all.WebBrowser.ExecWB(8,1)>   
      
    <input   type=button   value=打印預(yù)覽   onclick=document.all.WebBrowser.ExecWB(7,1)>
    posted @ 2008-06-25 13:35 胡昆栄 閱讀(287) | 評論 (0)編輯 收藏

    DataFormatString格式字符串
    DataFormatString="{0:格式字符串}"

    在DataFormatString 中的 {0} 表示數(shù)據(jù)本身,而在冒號后面的格式字符串代表所們希望數(shù)據(jù)顯示的格式;

    數(shù)字、貨幣格式:
    在指定的格式符號后可以指定小數(shù)所要顯示的位數(shù)。例如原來的數(shù)據(jù)為「1.56」,若格式設(shè)定為 {0:N1},則輸出為「1.5」。其常用的數(shù)值格式如下表所示:

    格式字符串 輸入 結(jié)果
    "{0:C}" 12345.6789 $12,345.68
    "{0:C}" -12345.6789 ($12,345.68)
    "{0:D}" 12345 12345
    "{0:D8}" 12345 00012345
    "{0:E}" 12345.6789 1234568E+004
    "{0:E10}" 12345.6789 1.2345678900E+004
    "{0:F}" 12345.6789 12345.68
    "{0:F0}" 12345.6789 12346
    "{0:G}" 12345.6789 12345.6789
    "{0:G7}" 123456789 1.234568E8
    "{0:N}" 12345.6789 12,345.68
    "{0:N4}" 123456789 123,456,789.0000
    "Total: {0:C}" 12345.6789 Total: $12345.68

    常用的日期時間格式:

    格式 說明 輸出格式
    d 精簡日期格式 MM/dd/yyyy
    D 詳細(xì)日期格式 dddd, MMMM dd, yyyy
    f 完整格式 (long date + short time) dddd, MMMM dd, yyyy HH:mm
    F
    完整日期時間格式
    (long date + long time)
    dddd, MMMM dd, yyyy HH:mm:ss
    g 一般格式 (short date + short time) MM/dd/yyyy HH:mm
    G 一般格式 (short date + long time) MM/dd/yyyy HH:mm:ss
    m,M 月日格式 MMMM dd
    s 適中日期時間格式 yyyy-MM-dd HH:mm:ss
    t 精簡時間格式 HH:mm
    T 詳細(xì)時間格式 HH:mm:ss

    posted @ 2008-06-10 23:03 胡昆栄 閱讀(509) | 評論 (0)編輯 收藏
    僅列出標(biāo)題  
    主站蜘蛛池模板: 三年片在线观看免费观看大全动漫 | 免费毛片a线观看| 无遮挡国产高潮视频免费观看 | 久久精品国产亚洲AV大全| 亚洲国产成人私人影院| 亚洲成人在线网站| 亚洲日韩区在线电影| 夜夜亚洲天天久久| 亚洲美女一区二区三区| 91午夜精品亚洲一区二区三区| 亚洲国产美女精品久久| 亚洲youjizz| 亚洲精品伦理熟女国产一区二区| 亚洲日韩精品A∨片无码| 亚洲精品无码不卡在线播HE| 亚洲国产一二三精品无码| 西西人体44rt高清亚洲| 亚洲精品资源在线| 一本天堂ⅴ无码亚洲道久久| 亚洲熟妇av一区二区三区下载| 亚洲人成7777影视在线观看| 亚洲欧美自偷自拍另类视| 野花视频在线官网免费1| 亚洲精华国产精华精华液好用| 亚洲精品色在线网站| 亚洲一级片免费看| 无码一区二区三区免费| 全免费毛片在线播放| 麻豆国产精品入口免费观看| 日韩版码免费福利视频| 精品久久洲久久久久护士免费| 亚洲精品无码久久毛片| 亚洲尹人香蕉网在线视颅| 亚洲日本久久久午夜精品| 亚洲1234区乱码| 瑟瑟网站免费网站入口| 免费高清国产视频| 91香蕉视频免费| 亚洲高清国产拍精品青青草原| 亚洲国产精品无码久久一区二区| 亚洲国产成人综合|