精通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对象实例的一种方式是将表达式嵌套在一对“/”中,所以,在表达式模式中,要表示字面意义的“/”也要用“"/”进行转义。

posted @ 2008-03-06 10:52  PointNet  阅读(702)  评论(1编辑  收藏  举报