精通Javascript動態網頁編程

8.10  定位符與原義字符

在驗證時,要用到一些定位符,來限定字符出現的位置,以方便匹配。同時,對於表達式中的元字符,必須進行轉義,使其變成原義字符才能正常顯示。本節介紹這兩種應用。

8.10.1  用於文本驗證的定位符

定位符用於規定匹配模式在目標字符串中的出現位置。例如,只能出現在開頭或結尾處,這對文本格式的驗證非常有用。在正則表達式中,有以下幾個定位符。

1.用 ^ 匹配目標字符串的開始位置

匹配必鬚髮生在目標字符串的開頭處,^必須出現在表達式的最前面才具有定位符作用。例如,“^o”與“ok”中的o匹配,但與“hello”中的o不匹配。如果設置了RegExp對象實例的Multiline屬性,^還會與行首匹配,即與“"n”、“"r”之後的位置匹配。代碼8.11演示了該字符的使用。

代碼8.11  行首匹配字符^:8.11.htm

<html>

<head><title>行首匹配字符^</title></head>

<body>

   <h1>行首匹配字符^</h1>

   <script language="JavaScript">

   <!--

      var reg_expression = /^zt/;  //使用行首元字符

      var textString=prompt("請輸入要檢查的字符串:","");

      var result=reg_expression.test(textString);  //匹配時返回true,否則false

      document.write("<font size='+1'><b>"+result+"<br>");

      if(result){

          document.write("<b>正則表達式/^zt/匹配字符串"""+ textString +""".<br>");

      }

      else{

          alert("未找到匹配!");

      }

   // -->

   </script>

</body>

</html>

運行該段代碼,會彈出一個對話框,要求用戶輸入一個字符串。如果輸入zt129837op2ueop(如圖8.12所示),並單擊“確定”按鈕,在瀏覽器窗口中會顯示匹配成功的相關內容,如圖8.13所示。

   

       圖8.12  輸入字符串zt129837op2ueop                       圖8.13  顯示匹配成功

2.用 $ 匹配目標字符串的結尾位置

匹配必鬚髮生在目標字符串的結尾處,$必須出現在表達式的最後面才具有定位符作用。例如,“o$”與“hello”中的o匹配,但與“ok”中的o不匹配。如果設置了RegExp對象實例的mutiline屬性,$還會與行尾匹配,即與“"n”、“"r”之前的位置匹配。代碼8.12演示了該字符的使用。

代碼8.12  行尾匹配字符$:8.12.htm

<html>

<head>

<title>行尾匹配字符$</title>

</head>

<body>

   <h1>行尾匹配字符$</h1>

   <script language="JavaScript">

   <!--

      var reg_expression = /zt$/;

      var textString=prompt("請輸入要檢查的字符串:","");

      var result=reg_expression.test(textString);  //匹配時返回true,否則false

      document.write("<font size='+1'><b>"+result+"<br>");

      if(result){

          document.write("<b>正則表達式/zt$/匹配字符串"""+ textString +""".<br>");

      }

      else{

          alert("未找到匹配!");

   }

   // -->

   </script>

</body>

</html>

運行該段代碼,會彈出一個對話框,要求用戶輸入一個字符串。如果輸入qweriqupoiasdzt(如圖8.14所示),並單擊“確定”按鈕,在瀏覽器窗口中會顯示匹配成功的相關內容,如圖8.15所示。

  

        圖8.14  輸入字符串qweriqupoiasdzt                      圖8.15  顯示匹配成功

3.用 "b 匹配一個字邊界

"b包含了字與空格間的位置,以及目標字符串的開始和結束位置等。例如,“er"b”匹配“never ok”中的“er”,但不匹配“verb”中的“er”。代碼8.13演示了該字符的使用。

代碼8.13  行尾匹配字符$:8.13.htm

<html><head><title>使用元字符"b</title>

</head>

<body>

<h1>使用元字符"b</h1>

<script language="JavaScript">

<!--

    var reg_expression = /"bman"b/;

    var textString=prompt("請輸入要檢查的字符串:","");

    var result=reg_expression.test(textString);  //匹配時返回true,否則false

    document.write("<font size='+1'><b>"+result+"<br>");

    if(result){

        document.write("<b>正則表達式 /""bman""b/匹配字符串"""+ textString +""".<br>");

    }

    else{

        alert("未找到匹配!");

    }

// -->

</script>

</body>

</html>

運行該段代碼,會彈出一個對話框,要求用戶輸入一個字符串。如果輸入“man woman”(如圖8.16所示),並單擊“確定”按鈕,在瀏覽器窗口中會顯示匹配成功的相關內容,如圖8.17所示。

 

          圖8.16  輸入字符串“man woman”                    圖8.17  顯示匹配成功

4.用 "B 匹配非字邊界

例如,“er"B”匹配“verb”中的“er”,但不匹配“never”中的“er”。

8.10.2  對特殊字符進行轉義

在表達式中用到的一些元字符不再表示原來的字面意義,如果要匹配這些有特殊意義的元字符,必須使用“"”將這些字符轉義爲原義字符。需要進行轉義的字符有“$”、“(”、“)”、“*”、“+”、“.”、“[”、“]”、“?”、“"”、“/”、“^”、“{”、“}”、“|”。

*     “"”的作用是將下一字符標記爲特殊字符、原義字符、反向引用或八進制轉義符,所以,要匹配字面意義的“"”,需要使用“""”表示。

*     創建RegExp對象實例的一種方式是將表達式嵌套在一對“/”中,所以,在表達式模式中,要表示字面意義的“/”也要用“"/”進行轉義。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章