转义的相关学习记录

  学习编程语言的时候,经常碰到需要对字符转义的情况,有时候自己会把一些知识点搞混,特以此文记录,持续更新。

  先看一个小例子,要写一个正则匹配像'010-12345'这样的电话号码,由于'-'是特殊字符,在正则表达式中,要用'\'转义,所以,上面的正则是\d{3}\-\d{3,8}。如果不用'\'转义,则'-'就成正则里范围的意思。

  以上这个小例子讲了为什么要转义。

  另外,js里的字符串也有一些需要转义的字符字面量,详见高程33页。平时用的比较多的是对'\\' ,'\'' ,'\'''以及'\unnnn'。以下两个正则表达式是一样的,

  var re1 = /ABC\-001/;

  var re2 = new RegExp('ABC\\-001');

  通过new RegExp创建的正则因为变量是字符串,所以需要先对\进行一次转义,若不先对\进行一次转义,写成new RegExp('ABC\-001'),js引擎会用字符串转义的规则用'\'对'-'进行转义,而js字符里并不需要对'-'转义,此时会有问题。

 

  关于HTML里的转义(字符实体),参考自w3school 。

  假如你想在网页上显示如下内容,

  <html>

  <head>
  <script type="text/javascript" src="loadxmldoc.js">
  </script>
  </head>

  <body>

  <script type="text/javascript">
  xmlDoc=loadXMLDoc("books.xml");
  document.write("xmlDoc is loaded, ready for use");
  </script>

  </body>

  </html>

  将这些内容直接照搬写入HTML源码中,浏览器会将其解析为HTML输出,看不到这些标签元素。此时可以用<pre>里写入这些内容,

<pre>
&lt;html&gt;

&lt;head&gt;
  &lt;script type=&quot;text/javascript&quot; src=&quot;loadxmldoc.js&quot;&gt;
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;

  &lt;script type=&quot;text/javascript&quot;&gt;
    xmlDoc=<a href="dom_loadxmldoc.asp">loadXMLDoc</a>(&quot;books.xml&quot;);
    document.write(&quot;xmlDoc is loaded, ready for use&quot;);
  &lt;/script&gt;

&lt;/body&gt;

&lt;/html&gt;
</pre>

  在上面的代码中,<pre> 标签中的特殊符号被转换为符号实体,比如 "&lt;" 代表 "<","&gt;" 代表 ">",若不用符号实体,<>还是会被解析显示。另外,请注意蓝色的代码,我们在 <pre> 标签中使用了链接,也就是 <a> 标签。

上面这段代码的显示效果如下:

  <html>

  <head>
  <script type="text/javascript" src="loadxmldoc.js">
  </script>
  </head>

  <body>

  <script type="text/javascript">
  xmlDoc=loadXMLDoc("books.xml");
  document.write("xmlDoc is loaded, ready for use");
  </script>

  </body>

  </html>

 

posted @ 2016-08-31 13:24  姜瑞涛  阅读(292)  评论(0)    收藏  举报