转义的相关学习记录
学习编程语言的时候,经常碰到需要对字符转义的情况,有时候自己会把一些知识点搞混,特以此文记录,持续更新。
先看一个小例子,要写一个正则匹配像'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> <html> <head> <script type="text/javascript" src="loadxmldoc.js"> </script> </head> <body> <script type="text/javascript"> xmlDoc=<a href="dom_loadxmldoc.asp">loadXMLDoc</a>("books.xml"); document.write("xmlDoc is loaded, ready for use"); </script> </body> </html> </pre>
在上面的代码中,<pre> 标签中的特殊符号被转换为符号实体,比如 "<" 代表 "<",">" 代表 ">",若不用符号实体,<>还是会被解析显示。另外,请注意蓝色的代码,我们在 <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>
浙公网安备 33010602011771号