概述
一?v1,加载的顺序,
二?先输<html>
再输<head>
<title>数组</title>
<scriptlanguage="javascript" type="text/javascript">
<!--
arr= ["JavaScript",2,true];
document.write(arr[0]+"<br>");
document.write(arr[1]+"<br>");
document.write(arr[2]+"<br>");
-->
</script>
</head>
<body>
</body>
</html>
三,
1. 进入node.js command prompt 命令窗口,输入
cd C:ProgramFilesnodejsnode_modulesnpmtest
2.键入node test.js
3.然后浏览器打开http://127.0.0.1:8899/可以看到输出了test nodjs。环境安装配置成功
四.脚本语言(Scripting Language)不需要事先编译,只要有一个与其相适应的解释器(Interpreter)就可以执行。
五.JavaScript Editor是一个很好的JavaScript编辑软件,可以显示正确的语法代码,还有十分出色的提示功能。在输入代码时可以弹出代码提示,
六,标签:h1,src,id
变量:obj
七,
<script>
JavaScript程序
</script>
可放<head>….</ head >或者<body>….</body >或者文档的多个位置。
八,将Javascript代码嵌入html中方法:
第一个<script>改为:
<script Language=”JavaScript” src=” src=“本文件兄弟节点的文件夹名/文件名.js”>
第二个仍为</script>
九,alert(str); 弹出消息str对话框(对话框中有一个OK按钮),消息对话框是排它的,也就是在用户点击对话框的按钮前,不能进行任何其它操作。
例如:alert(“这是”); alert(“hi”); alert(str); alert(link[2].innerHTML);
十,无论引用几个外部js文件,浏览器都会按照<script>元素在页面中出现的先后顺序对它们依次进行解析。换句话说,在第一个<script>元素包含的代码解析完成后,第二个<script>包含的代码才会被解析,然后才是第三个、第四个...
这种做法的目的就是把所有外部文件(包括CSS文件和JavaScript文件)的引用都放在相同的地方。
<html>
<head>
<title>Example HTML Page</title>
</head>
<body>
<!-- 这里放内容 --> \把全部JavaScript引用放在<body>元素中,放在页面的内容后面
<script type="text/javascript"src="example1.js"></script> \窗口显示空白页面的时间缩短
<script type="text/javascript"src="example2.js"></script>
</body>
</html>
十一,
onLoad,事件处理,由用户的动作(比如点击一个按钮)触发,在页面的所有组成部分(包括图片、Java Applet和嵌入多媒体)载入浏览器时onLoad事件处理被激活。
<html>
<head>
<title>an onload script</title>
<script language="javascript">
<!--
function done(){
alert("the page has finished loading.")
}
//-->
</script>
</head>
<body οnlοad="done()">
页面原始内容不包含任何脚本语句. //此处没有用Document.write( “页面”);
</body>
</html>
十二,<head>标签对的作用就是控制文档的头部信息。此标签中间4种信息
1 <title>…</title>、
2<script>…</script>
3 <isindex>索引标签,无需成对出现,说明该文档是可以按关键字索引的。
不用ctrl+f,,自带搜索框。
4放置用户编辑的JavaScript代码。
十三,<title>…</title>标签对,只能放在<head>…</head>标签对之间,而且其内部不能包含其他标签。
十四,<body>…</body>标签可以包含<table>、<font>、<img>、<div>等标签, 可以把HTML文档的主体区域简单地理解成标题以外的所有部分,
• “bgcolor”:指定HTML文档的背景色。
• “background”:指定HTML文档的背景文件。
• “text”:指定HTML文档中文字的颜色。
• “link”:指定HTML文档中待连接超链接对象的颜色。
• “alink”:指定HTML文档中连接中(active)超链接对象的颜色。
• “vlink”:指定HTML文档中已(visited)连接超链接对象的颜色。
•
•
十五,
<font face='楷体_gb2312'color='blue' size='+2'>
意思是 FONT标签里边的字: 字体是国标 楷体 颜色是:蓝色
size='+2'意思是2号字
十六,
<blockquote>…</blockquote>标签对为缩进标签,在浏览器中显示向右缩进的文字。在标签对之间加入的文本将会在浏览器中显示的效果,与在普通的文本中使用Tab键进行缩进的效果一样。使用方法为<blockquote>要缩排的文字</blockquote>。
例如以下代码:
<body>
没有使用缩进标签的文本。
<blockquote>使用缩进标签缩排1单位</blockquote>
<blockquote><blockquote>使用缩进标签缩排2单位</blockquote></blockquote>
</body>
十七,
<pre>…</pre>标签对可以完整保留设计者在源文件中所定义的格式,包括各种空格,缩进,以及其他特殊格式,全都原封不动的反映在浏览器页面上。使用<pre>标签进行预格式化的代码如下:
<pre>
锄禾日当午,
汗 滴 禾 下 土。 \空格隔开
</pre>
十八,HTML的标签单独出现的标签有哪些? b,h,i,i
<br>
<hr>
<input>
<img>
HTML:表格中的<tr><th>标签都可以单独使用吗?
可以不加,遇到新的 td 时,当前 td 自动结束。
但是为了让代码更明确,更易读,建议都成双成对
十九,
无序列表用<UL > Unordered list和 <LI>组合使用,\效果同<dir >和<li>。只是每项长度不超过20字符 。效果同<menu>和<li>
有序列表用<OL > ordered list和 <LI>组合使用。
<HR> \画分割线
<OL Start=9> \表明为第9项下表开始
<LI>这是列表的第9项。
<LI>这是列表的第10项。
</OL>
二十,
<DL> \ Definition List 描述性列表
<DT>计算机科学与技术学院 \ definition term 定义项目
<DD>软件与理论专业 \ definition description 定义的描述
<DD>应用专业
<DD>硬件专业
</DL>
二十一,
• <sup>…</sup>标签对指定文字为上标。
• <sub> …</sub>标签对指定文字为下标。
• <em> …</em>标签对指定对某段文字进行强调,通常用斜体字显示出来。
• <strong> …</strong>标签对对文本进行强调,通常用粗体字显示出来。
• <b>…</b>标签对指定文字为粗体字。
二十二,
_blank 是指超链接连接的网页 是通过一个新的网页窗口打开
_self的话 是指在本身这个网页窗口来打开新的网页链接
_top与_self差不很大 但是如果你用了<!--#include file="..."-->时 就会知道两者的差别了
因为如果你的超链接是 做在 <!--#include file="..."-->上时
如果用_self 点击后的超链接就会在<!--#includefile="..."--> 这个页面上打开
而页面其它部分不会改变 如果用_top 则会整个窗口一起跳转到新的链接网页
_parent主要是针对于框架网页中的跳转 如果你一个页面由两三个框架组成
你要想整个页面跳转到其它网页链接 目标就需要用_parent了 如果不用这个 就只会使得那一小块
框架区域里的网页跳转 而其它的地方则不变
二十三,
<a href="#C1">第1部分的链接</a> //浏览器遇到#会识别内部定位,点击该链接会定位到name="C1"处的文档,
<a name="C1">第1部分 </a>
二十四,
href是hypertext reference的缩略词,用于设定链接地址,其链接地址必须是URL地址,必须给出具体的路径。其中URL地址可以为下面内容:
(1)网站:可以设置ip地址或者是网站的网址。例如,链接到google站点首页可以表示为以下形式。
<ahref="http://www.google.com">Google</a>
<a href=”http://64.233.189.104/”>Google</a>
(2)网页:链接到本机的网页,可以直接直接指定网页所在的路径。
<ahref="http://www.sohu.com">搜狐首页</a>
<ahref="index.htm">回到主页面</a>
(3)可执行文件:当链接到的文件的扩展名不是.htm(.html)或者.asp(.jsp/.php)时,而是其他可执行的文件,会将链接到的文件下载到本地计算机上或者直接执行。如果是文本文件(如Word格式),则在浏览器中打开文件并进行编辑。
<ahref="word.doc">word文档,打开文档进行编辑</a>
<ahref="sound.wav">播放声音文件</a>
<ahref="javascript.Open()">执行对应的应用程序</a>
(4)网页上的书签:通常使用在网页的长度超过屏幕时,可以使用书签直接跳转到该书签指向的具体内容,节省移动滚动条的时间。
二十五,
alt属性(alter)用来显示图片的替换文本。
情况一,当打开网页的过程中,遇到网络传输错误,或者
情况二,设计者设定图片文件路径错误,图片无法正常显示时,替换文本可以暂时代替图片功能,起到一定的说明作用。
情况三,正常情况下,滑鼠到图上时,说明文字就会自动出现。
例如下面的代码:
<img src ="../images/1.jpg" alt="a beautiful girl">
二十六,
size是指文本框内(空白区)的长度(单位是字符数),
width是指文本框控件的长度(以坐标值为单位)---像素点数或百分数。
二十七,
<p><img src="images/22.gif" align="bottom">AAA</p>
// 指语句左边的图片与右边的AAA顶端对齐
二十八,
<tr>和</tr>标签
注意(1)用来创建表格中的每一行。即<td>只对一个单元格起作用,<tr>只对一行起作用,<table>对整个表格起作用。
注意(2)此标签只能放在<table>和</table>标签对之间,
注意(3)在此标签对之间加入文本是无效的。
标签<tr>具有以下一些属性:
1.属性align (=left,center,right)和valign(=top,middle,bottom,baseline).
2.属性bgcolor
二十九,<td>
注意(1)只能放在<tr>和</tr>标签对之间才是有效的。
注意(2)想要输入的文本只能放在<td>和</td>标签对之间。
<td>标签具有以下一些属性:
1.属性width和height
2.属性align和valign
3.属性colspan和rowspan
举例:同时合并多行多列
<TABLE BORDER=1> \表边框为1个像素
<TR> <TD>1</TD> <TD colspan="2"rowspan="2">2356</TD> </TR> \第一列
<TR> <TD>4</TD> </TR> \第二列
</TABLE>
运行结果:
三十,
<caption>和</caption>标签是表格的说明性文字,通常出现在表格的上方,主要是用来总结表格的内容和提供表格内容的简明信息。新的HTML规范(从HTML4.0标准开始)规定,如果有标题元素,它必须跟踪表格的起始标签<table>之后。例如:
<table border=1>
<caption>省份和城市表</caption>
。。。
</table>
三十一,框架集标签<frameset>…</frameset>
注意(1)功能:<frameset>使用框架标签就可以将一个浏览器文档窗口分割成多个子窗口,每个子窗口中都可以显示一个独立的网页文件。
注意(2)位置:<frameset>和</frameset>标签嵌套在<html></html>标签对中,也可以嵌套使用,但是必须放在<body>和</body>标签之外,因为,<frameset>和</frameset>标签只是用来划分框架窗口的,而不能显示其他的网页元素。
例:< frameset rows=”40%,*” cols=”50%,*,*,200”> //2行,4列(最后一列占200像素)
规律:一个 *表示剩余空间 分配给一个,
多个 *表示剩余空间 平均分配给多个,
三十二,框架的嵌套
< frameset rows=”60,*” cols=”*”> //网页大框架为两行一列
< frame src=”top.html” name=”topFrame”> // 缩进frame ,表示其中的上面的部分
< framesetrow=”*” cols=”192,*>” // 缩进frameset,表示其中 的下面
(因为上部分已介绍)的部分分为一行两列
< frame src=”left.html” name=”leftFrame”> //下左部分
< frame src=”right.html” name=”rightFrame”> //下右部分
</ frameset> //下部分介绍完毕
</ frameset>//全部网页介绍完毕
三十三,
左边部分里的链接 在右边部分里显示该怎么做
'右边的框架命名为RightFrame
'左边的链接指定target为RightFrame
<a href="file://E/myweb/test.asp" target="RightFrame">目录</a>
三十四,《清华入门第47页》,
用户输入区域标签<input type=””>。必须放在<form>和</form>标签之间。
1.单行文本输入框(inputtype="text")
2.多行输入框(textarea)
3.密码输入框(inputtype="password")
4.单选框(inputtype="radio")
5.复选框(inputtype="checkbox")
6.下拉框(select)
7.提交(inputtype="submit")
8.重置(inputtype="reset")
9.图片提交(inputtype="image")
10.列表框<select name=nametext size=n multiple>或<optionselected value =value>
11.隐藏控件<input type=”hiden”name=” name” value= value>保存跟踪数据和用户信息
三十五,button和submit是有本质上的区别!
type=button 就单纯是按钮功能
type=submit 是发送表单
但是对于从事WEB UI的人应该要注意到,使用submit来提高页面易用性:
使用submit后,页面支持键盘enter键操作.
用button后往往页面不支持enter键了。所以需要支持enter键,必须要设置个submit,默认enter键对页面第一个submit进行操作。
<input type="submit"name="b1" value="提交" onClick="bt_submit_onclick()">
执行完onClick,转到action。可以自动提交不需要onClick。所以说onclick这里可以不要。
<input type="button"name="b1" value="提交" onClick="bt_submit_onclick()">
执行完onClick,跳转文件在 js文件里控制。提交需要onClick。
三十六,
JavaScript是严格区分大小写的。
HTML标记并不区分大小写。<table>、<Table>还是<TABLE>一样。
三十七,
在JavaScript程序中,每条功能执行语句的最后必须用分号(;)结束。---好习惯。
一行中只写一条语句时,可以省略语句结尾的分号,此时以回车换行符作为语句的结束。---坏习惯。
三十八,(1)字符串型常量用单或双引号 引起来。(2)单可含双,双可含单。(3)c”25”表示有2和5组成的字符串。(4)因为HTML中使用双引号来定界字符串,所以Javascript建议中用单引号。
三十九,1.如果在一个记号中插入了空格、制表符或写到两行上,JavaScript就会将它分成两个记号。例如:area是一个变量名,而ar ea则是两个独立的变量ar和ea。
2. 如果字符串常量本身包含空格,如“cell phone”,JavaScript解释器在解释代码的过程中会保留这些空格。
四十,
标识符可以由任意顺序的大小字母、数字、下划线(_)和美元符号($)组成,
但标识符不能以数字开头,不能是JavaScript中的保留字(如下)。
1 abstract
3 boolean breakbyte
6 case catchchar class const continue
5 debuggerdefault delete do double
4 else enumexport extends
6 false finalfinally float for function
1 goto
8 if implementsimport in(判断是否为对象属性)
instanceof(判断对象是否为指定对象类型) int interface is
1 long
4 native newnull namespace
4 packageprivate protected public
1 return
5 short staticsuper switch synchronized
7 this throwthrows transient true trytypeof(返回数据类型)
1 use
3 var voidvolatile
2 while with
变量名(1)必须以大写字母(A~Z)、小写字母(a~z)或下划线(_)开头。其他的字符可以用字母、下划线或数字(0~9)。(2)区分大小写。(3)JavaScript变量命名约定与Java类似。也就是说,对于变量名为一个单词的,则要求其为小写字母,例如:area。对于变量名由两个或两个以上的单词组成,则要求第二个和第二个以后的单词的首字母为大写,例如,userName。
在创建一个变量时可以不指定该变量将要存放何种类型的信息。
1.使用关键字var显式声明变量
2.使用赋值语句 隐式声明变量
四十一,数据类型分类:
整型直接量:八进制以零0开头,十六进制以零0x开头
浮点型直接量
数值型 特殊 NaN :有is NaN()函数检测此值
直接量
基本 字符串 转义字符( 为null).
数
据 布尔型false,true.
类 空值型null (==undefined, 不=== undefined)
型 未定义型 undefined;并未声明或赋值的变量,并不存在的对象属性。
函数(function)
复合 对象(object)
数组(array)
JavaScript转义符—正撇,反捺。
转义序列 | 字符意义 |
/b | 退格 |
/f | 走纸换页 |
/n | 换行 |
/r | 回车 |
/t | 横向跳格 (Ctrl-I) |
/' | 单引号(输出单引号时要用转义/') |
/" | 双引号(输出双引号时要用转义/") |
// | 正斜杠(即撇) |
编程的时候要注意特殊字符的问题,很多运行时出现的问题都是因为特殊字符的出现而引起的。
注意,由于反斜杠本身用作转义符,因此不能直接在脚本中键入一个反斜杠。如果要产生一个反斜杠,必须一起键入两个反斜杠(//)。
四十二,var bb=”22.5”;
eval ( “100”+bb ) 先将“100”+bb连接成一个字符串,
再将字符串转化为值,结果为10022.5不是122.5
四十三,关系运算符:
(1) 如果数字的字符与 字符串的字符完全相同,那么他们相等(因为比较前会强制类型转换),例如:100等于“100”,
(2) 严格等即三等号(===)和严格不等(!===)。包括值和类型,
例如100== “100”true
100===“100”false
四十四,逻辑与&&:只要左边为0,null,或空字符串,就为零。
四十五,字符串运算符只有一个字符串连接运算符(+),
(1)例如,“This”+“is”的运算结果为“This is”,“中国”+“青岛”运算结果为”中国青岛”。
(2)当操作数中至少有一个操作数是字符串时,JavaScript解释器将另一操作数转换为字符串,其中数据转换为相应的字符串,而布尔型数据则相应地转换为“true”或“false”。例如,“36”+2的运算结果为“362”,“It is”+true的运算结果为“It is true”。
(3)字符串连接运算符还可以和前面的赋值运算符联合使用,形成“+=”运算符,它的作用是,将运算符右侧的字符串拼接到该运算符左侧字符串的后面,并将结果赋值给运算符左侧的操作数。如:“a”+=“b”,结果ab.
四十六,>>右移
>>>右移,用零填充在左边。
四十七,正则表达式Regular Expression。
RegExp对象的属性
RegExp对象的属性分为静态属性和实例属性。下面分别进行介绍。
1.1 静态属性
(1)index属性。是当前表达式模式首次匹配内容的开始位置,从0开始计数。其初始值为-1,每次成功匹配时,index属性都会随之改变。
(2)input属性。返回当前所作用的字符串,可以简写为$_,初始值为空字符串""。
(3)lastIndex属性。是当前表达式模式首次匹配内容中最后一个字符的下一个位置,从0开始计数,常被作为继续搜索时的起始位置,初始值为-1,表示从起始位置开始搜索,每次成功匹配时,lastIndex属性值都会随之改变。
(4)lastMatch属性。是当前表达式模式的最后一个匹配字符串,可以简写为$&。其初始值为空字符串""。在每次成功匹配时,lastMatch属性值都会随之改变。
(5)lastParen属性。如果表达式模式中有括起来的子匹配,是当前表达式模式中最后的子匹配所匹配到的子字符串,可以简写为$+。其初始值为空字符串""。每次成功匹配时,lastParen属性值都会随之改变。
(6)leftContext属性。是当前表达式模式最后一个匹配字符串左边的所有内容,可以简写为$`(其中“'”为键盘上“Esc”下边的反单引号)。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。
(7)rightContext属性。是当前表达式模式最后一个匹配字符串右边的所有内容,可以简写为$’。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。
(8)$1…$9属性。这些属性是只读的。如果表达式模式中有括起来的子匹配,$1…$9属性值分别是第1个到第9个子匹配所捕获到的内容。如果有超过9个以上的子匹配,$1…$9属性分别对应最后的9个子匹配。在一个表达式模式中,可以指定任意多个带括号的子匹配,但RegExp对象只能存储最后的9个子匹配的结果。在RegExp实例对象的一些方法所返回的结果数组中,可以获得所有圆括号内的子匹配结果。
1.2 实例属性
(1)global属性。返回创建RegExp对象实例时指定的global标志(g)的状态。
如果创建RegExp对象实例时设置了g标志,该属性返回True,否则返回False,默认值为False。
(2)ignoreCase属性。返回创建RegExp对象实例时指定的ignoreCase标志(i)的状态。如果创建RegExp对象实例时设置了i标志,该属性返回True,否则返回False,默认值为False。
(3)multiLine属性。返回创建RegExp对象实例时指定的multiLine标志(m)的状态。如果创建RegExp对象实例时设置了m标志,该属性返回True,否则返回False,默认值为False。
(4)source属性。返回创建RegExp对象实例时指定的表达式模式文本字符串。
四十八,
document.write( " 原字符串为:'"+s+"'<br> " );
第一个引号(黄色): document.write字符串时必加,如”/”和”:”。变量名时不加引号。
第二个引号(绿色):输出单引号时要用转义/'
第三个引号(粉红):输出字符串S.
四十九,5.3例子
X=prompt("请输入今天是星期几(直接输入数字1,2,3……7):" ," 6 " );
Prompt( message ,[ defaultText ] );
结果(1)显示提示对话框,结果(2)等待用户在文本框中输入内容,
defaultText 为文本框中显示的初始内容。
五十,
age =parseInt( age ); //将输入的字符串age转化为整数age.
五十一,
for ( i in myarray) // 即for (var i=0;i<N;i++) for…in语句。它是专门用来处理有关数组和对象的循环的,
{
document.write("数组中第", i ,"个元素是:"); //输出数组元素位置i
document.write(myarray[i]+"<br>"); //输出数组中第i个元素的值后换行
}
五十二,
with(document) //通过with表达式可以使用对象的属性和方法,而不需要每一次都输入对象的名称。
{
bgColor="yellow"; //改变document对象的bgColor属性
fgColor="green" //改变document对象的fgColor属性
write("背景是黄色的,文字是绿色的");
}
五十三,
for(var x=1;x<10;x++)
{
output=output+"x="+x; \ 在第一次循环时,x=1,output还是空字串,因此第一次循环完之
后,output的值变为"x=1"。。。。最后到x=9时,
字符串output已经变成了“x=1x=2x=3x=4x=5x=6x=7x=8x=9”。
}
五十四,函数一般定义在HTML文档的<head>部分,在<script>标记内部,函数可以出现在任何位置。此外,函数也可以在单独的脚本文件中定义,并保存在外部文件中。
function 函数名 ( 形式参数1,形式参数2,…,形式参数n )
{
语句组;
}
五十五,
var msg="全局变量"; var msg="全局变量";
function show() function show()
{ {
var msg; //函数运行完释放
msg="局部变量"; msg="局部变量";
} }
show(); show();
alert(msg); alert(msg);
最终msg="局部变量"; 最终 var msg="全局变量";
五十六,
function product(name,num,price) //定义函数
{
this.name=name; //定义属性
this.num=num;
this.price=price;
this.total=total; //将后面要定义的函数total()的名称赋值给该成员,从而定义了newproduct对象的方法total
在构造函数内定义的属性和方法为所有实例共享,
外 某个实例独有
}
functiontotal() //定义方法
{
return(this.num*this.price);
}
var newproduct=new product("原材料",1000,1500); //创建对象实例
var totalcapital= newproduct.total(); //调用newproduct对象的方法求出总资产
document.write("总资产:",totalcapital);
五十七,
var str=new String("按格式显示字符串");
document.write( "str字符串的anchor(' myanchor' )方法:"+str.anchor(' myanchor' )+"<br>"); // anchor(’myanchor’);放置名字为myanchor的描点---—即链接目的地。
document.write("str link(http://www.163.com/)方法:"+str.link("http://www.163.com")+"<br>");
// link ( URL )链接名为str,但链接目的地为URL。
五十八,106页例题7—9
159页,match( regexp ) 查找匹配
六十,
155页,删除对象 : 将对象赋为null 或undefined 即 student1=null;
删除对象方法和属性:delete student1.math;
六十一,
String对象 属性:只有一个length属性。
1.字符串显示方法
方法:
2.字符串处理方法
六十二,
Math不用创建实例即可调用属性和方法,如:var x=Math.round(num); //四舍五入
Date必须创建实例即可调用属性和方法,如:var now=new Date();//获取当前时间
六十三,
d = newDate(); //取得当前日期和时间
document.write("今天是: " +d.toLocaleDateString( ) + "."); // 显示日期
document.write("当前时间是: "+ d.toLocaleTimeString( )+ "<p>"); // 显示时间
六十四,
var arr=newArray( 2,true,”a”);//数组不要求每个元素类型相同,
arr[3]=4; //添加数组元素无需考虑数组元素个数,
六十七,
var a=new Array( );
var b = a;
b[0] ="change";
alert( a [0] ); //当被赋数组b改变时,原数组a也随之改变,
六十八,
var value=[ [1, 4, 2], [3, 7, 6], [8, 9, 5]]; //一维嵌一维变成二维
for(i=0;i<3;i++) //使用循环语句输出数组元素的值
{
for( j in value[i] )
{
document.write(""+value[i][j]); //输出每个数组元素的值
}
document.write("<br>");
}
六十九,
// <IMGοnclick="checkCancel()" SRC="8-5.gif"> 尖括号中的内容不能被注释。
有没有//都一样。
七十,
if ( window.event.srcElement.tagName=="IMG")
//判断引发事件的标记是不是 'img'.
七十一,
JSON.parse()和JSON.stringify()
(1) parse用于从一个字符串中解析出json对象,如
var str ='{"name":"huangxiaojian","age":"23"}'
结果:
JSON.parse(str)
Object
age:"23"
name:"huangxiaojian"
__proto__:Object
注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。
(2).stringify()用于从一个对象解析出字符串,如
var a = {a:1,b:2}
结果:
JSON.stringify(a)
"{"a":1,"b":2}"
七十二,
clientWidth 是对象可见的宽度,不包滚动条等边线,会随窗口的显示大小改变。
offsetWidth 是对象的可见宽度,包滚动条等边线,会随窗口的显示大小改变。
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
offsetLeft:获取对象相对于版面(或由offsetParent属性指定的父坐标 )的计算左侧位置
七十三,
var a=setTimeout (表达式,延时时间);到延时时间执行一次表达式,可以用clearTimeout(a);来取消;
var a=setInterval(表达式,间隔时间);每隔间隔时间执行一次,可以使用clearInterval(a)来取消
七十四,
第一章 正则表达式概述
正则表达式(RegularExpression)起源于人类神经系统的研究。正则表达式的定义有以下几种:
l 用某种模式去匹配一类字符串的公式,它主要是用来描述字符串匹配的工具。
l 描述了一种字符串匹配的模式。可以用来检查字符串是否含有某种子串、将匹配的子串做替换或者从中取出符合某个条件的子串等。
l 由普通字符(a-z)以及特殊字符(元字符)组成的文字模式,正则表达式作为一个模版,将某个字符模式与所搜索的字符串进行匹配。
l 用于描述某些规则的的工具。这些规则经常用于处理字符串中的查找或替换字符串。也就是说正则表达式就是记录文本规则的代码。
l 用一个字符串来描述一个特征,然后去验证另一个字符串是否符合这个特征。
以上这些定义其实也就是正则表达式的作用。
第二章 正则表达式基础理论
这些理论将为编写正则表达式提供法则和规范,正则表达式主要包括以下基础理论:
l 元字符
l 字符串
l 字符转义
l 反义
l 限定符
l 替换
l 分组
l 反向引用
l 零宽度断言
l 匹配选项
l 注释
l 优先级顺序
l 递归匹配
2.1 元字符
在正则表达式中,元字符(Metacharacter)是一类非常特殊的字符,它能够匹配一个位置或字符集合中的一个字符,如:、 w等。根据功能,元字符可以分为两种类型:匹配位置的元字符和匹配字符的元字符。
2.1.1 匹配位置的元字符
包括:^、$、和b。其中^(脱字符号)和$(美元符号)都匹配一个位置,分别匹配行的开始和结尾。比如,^string匹配以string开头的行,string$匹配以string结尾的行。^string$匹配以string开始和结尾的行。单个$匹配一个空行。单个^匹配任意行。b匹配单词的开始和结尾,如:bstr匹配以str开始的单词,但b不匹配空格、标点符号或换行符号,所以,bstr可以匹配string、string fomat等单词。bstr正则表达式匹配的字符串必须以str开头,并且str以前是单词的分界处,但此正则表达式不能限定str之后的字符串形式。以下正则表达式匹配以ing结尾的字符串,如string、This is a string等
Ingb
正则表达式ingb匹配的字符串必须以ing结尾,并且ing后是分界符,以下正则表达式匹配一个完整的单词:bstringb。
2.1.2 匹配字符的元字符
匹配字符的元字符有7个:.(点号)、w、W、、s、S、d和D。其中点号匹配除换行之外的任意字符;w匹配单词字符(包括字母、汉字、下划线和数字);W匹配任意非单词字符、s匹配任意的空白字符,如空格、制表符、换行等;S匹配任意的非空白字符;d匹配任意数字字符;D匹配任意的非数字字符。如:
^.$匹配一个非空行,在该行中可以包含除了换行符以外的任意字符。
^w$匹配一个非空行,并且该行中只能包含字母、数字、下划线和汉字中的任意字符。
bawwwwww\b匹配以字母a开头长度等于7的任意单词
bawwwdddDb匹配以字母a开头后面有3个字符三个数字和1个非数字字符长度等于8的单词
2.2 字符类
字符类是一个字符集合,如果该字符集合中的任何一个字符被匹配,则它会找到该匹配项。字符类可以在[](方括号)中定义。如:
[012345]可以匹配数字0到5中的任意一个。
<H[123456]>可以匹配HTML标签中的H1到H6。
[Jj]ack可以匹配字符串Jack或jack。
但是,由于表达式[0123456789]书写非常不方便,连字符(-)便应用而生,[0-9]等价于[0123456789]。[a-z]匹配任何小写字母,[A-Z]匹配任意大写字母。如果要在字符类中包含连字符,则必须包含在第一位,如:[-a]表示表达式匹配-或者a。在字符类中如果^是字符类的第一个字符表示否定该字符串,也就是匹配该字符串外的任意字符,如:[^abc]匹配除了abc以外的任意字符,[^-]匹配除了连字符以外的任意字符,a[^b]匹配a之后不是b的字符串。
表2-1 常用的字符类
字符或表达式
说明
w
匹配单词字符(包括字母、数字、下划线和汉字)
W
匹配任意的非单词字符(包括字母、数字、下划线和汉字)
s
匹配任意的空白字符,如空格、制表符、换行符、中文全角空格等
S
匹配任意的非空白字符
d
匹配任意数字
D
匹配任意的非数字字符
[abc]
匹配字符集中的任何字符
[^abc]
匹配除了字符集中包含字符的任意字符
[0-9a-z_A-Z_]
匹配任何数字、字母、下划线。等同于w
p{name}
匹配{name}指定的命名字符类中的任何字符
P{name}
匹配除了{name}指定的命名字符类中之外的任何字符
.
匹配除了换行符号之外的任意字符
[^0-9a-zA-Z_]
等同于W
2.3 字符转义
表2-2:常用的转义字符
表达式
可匹配
r, n
代表回车和换行符
t
制表符
\
代表 "" 本身
还有其他一些在后边章节中有特殊用处的标点符号,在前面加 "" 后,就代表该符号本身。比如:^, $ 都有特殊意义,如果要想匹配字符串中 "^" 和 "$" 字符,则表达式就需要写成 "^" 和 "$"。
表达式
可匹配
^
匹配 ^ 符号本身
$
匹配 $ 符号本身
.
匹配小数点(.)本身
2.4 反义
在使用正则表达式时,如果需要匹配不在字符类指定的范围内的字符时,可以使用反义规则。其实我们已经使用过反义表达式,如W、S、D、[^abc]等。常用的反义表如下:
表2-3:常用的反义表达式
字符或表达式
说明
W
匹配任意不是字母,数字,下划线,汉字的字符
S
匹配任意不是空白符的字符
D
匹配任意非数字的字符
B
匹配不是单词开头或结束的位置
[^x]
匹配除了x以外的任意字符
[^aeiou]
匹配除了aeiou这几个字母以外的任意字符
2.4 限定符
正则表达式的元字符一次只能匹配一个位置或一个字符,如果需要匹配零个一个或多个字符时,则需要使用限定符。限定符用于指定允许特定字符或字符集自身重复出现的次数。如{n}表示出现n次;{n,}表示重复至少n次;{n,m}表示至少出现n次最
多m次。常用限定符如下表:
表2-4:常用限定符
字符
描述
*
匹配前面的子表达式零次或多次。例如,zo*能匹配 "z" 以及 "zoo"。 * 等价于{0,}。
+
匹配前面的子表达式一次或多次。例如,'zo+'能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
?
匹配前面的子表达式零次或一次。例如,"do(es)?"可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n}
n 是一个非负整数。匹配确定的n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,}
n 是一个非负整数。至少匹配n次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m}
m 和 n 均为非负整数,其中n<= m。最少匹配 n 次且最多匹配 m 次。刘, "o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
*?
尽可能少的使用重复的第一个匹配
+?
尽可能少的使用重复但至少使用一次
??
如果有可能使用零次重复或一次重复。
{n}?
等同于{n}
{n,}?
尽可能少的使用重复但至少重复n次
{n,m}?
介于n次和m次之间,尽可能少的使用重复。
2.5 贪婪、惰性和支配性匹配
惰性匹配:先看字符串中的第一个字母是不是一个匹配,如果单独一个字符还不够就读入下一个字符,如果还没有发现匹配,就不断地从后续字符中读取,只道发现一个合适的匹配,然后开始下一次的匹配。
贪婪匹配:先看整个字符串是不是一个匹配,如果没有发现匹配,它去掉字符串中最后一个字符并再次尝试,如果还没有发现匹配,那么再次去掉最后一个字符,这个过程会一直重复直到发现一个匹配或字符串不剩一个字符为止。
支配性匹配:只尝试匹配整个字符串,如果整个字符串不能产生一个匹配,则不再进行尝试。
我们普通的字符类均是贪婪匹配,如果在字符类后加个问号(?)则表示懒惰匹配,要成为支配性匹配则在懒惰匹配后加个问号(?).
2.6替换
正则表达式0d{2}-d{8}和0d{3}-d{7}分别匹配区号为3位和4位的固定电话号码,如果需要同时匹配区号为3位和4位的固定电话号码,可以使用替换满足这一需求。最简单的替换是使用竖线(|)表示。以下表达式匹配了区号为3位号码为8位和区号为4位号码为7位的的电话号码,区号和号码均使用-连接,0d{2}-d{8}|0d{3}-d{7}
表2-5 常用替换
字符或表达式
说明
|
匹配竖线(|)左侧或右侧
(?(表达式)yes|no)
表达式要么与yes部分匹配要么与no部分匹配,其中no部分可以省略。
(?(name)yes|no)
以name命名的字符串要么与yas部分匹配,要么与no部分pp,其中no部分可以省略
2.7 分组
分组又称为子表达式,即把一个正则表达式的全部或部分分成一个或多个组。其中分组使用圆括号(),分组后把圆括号中的表达式看做一个整体来处理,比如:(abc){1,2}表示abc出现一次或两次的字符串,其中把abc看做一个整体来进行匹配。
2.8 后向引用
当一个正则表达式被分组后,每一个组将自动被赋予一个组号,该组号可以代表该组的表达式。其中,组号的编制规则为:从左到右,以分组的左括号为标志,第一个组号为1,第二个分组号为2,以此类推。如:(A?(B?(C?)))将产生3个组号,第一组为:(A?(B?(C?)));第二组为: (B?(C?));第三组为:(C?)。
反向引用提供了查找重复字符组的方便方法,反向引用可以使用数字命名(默认名称)的组号,也可以使用指定命名的组号。比如:b(w)1b匹配两个字符一样的单词,此表达式和b(w)wb不一样,后者两个字符可以不一样。再看,b(w)(d)12b,匹配一个字符和一个数字然后重复字符和数字。bw*(w+)1b匹配以至少两个字符一样结尾的单词。b(w+)bs+1b此正则表达式匹配的具体过程如下:
a. 表达式b(w+)b匹配一个单词并且单词的长度至少为1
b. 表达式s+匹配一个或多个空白字符
c. 表达式1将重复子表达式(w+)匹配的内容,及匹配重复的单词
d. 匹配单词的结束位置。
分组不仅可以使用数字作为组号,还可以使用自定义名称作为组号。以下两个正则表达式都是将分组后的子表达式w+命名为word.
(?<word>w+)
(?’word’w+)
因此b(w+)bs+1b和以下正则表达式是等价的,都匹配重复的单词:
b(?<word>w+)bs+k<word>b
表2-5 后向引用说明表
表达式
说明
数字
使用数字命名的后向引用
k<name>
使用指定命名的后向引用
表2-6 常用分组说明
字符
说明
(expression)
匹配字符串expression,并将匹配的文本保存到自动命名的组里
(?<nane>expression)
匹配字符串expression,并将匹配的文本保存到以name命名的变量中,该名称不能包含标点符号,不能以数字开头。
(?:expression)
匹配字符串expression,不保存匹配的文本,也不分配组号
(?!expression)
匹配后面不是字符串expression的位置
(?=expression)
匹配字符串expression前面的位置
(?<=expression)
匹配字符串expression后面的位置
(?<!expression)
匹配前面不是字符串expression的位置
(?>expression)
只匹配expression一次
2.9 零宽度断言
元字符^、b、$都匹配一个位置,并且这个位置满足一定条件。在此把满足一个条件称为断言或零宽度断言。正则表达式中零宽度断言说明如下表:
表2-6 零宽度断言
字符(断言)
说明
^
匹配行的开始位置
$
匹配行的结束位置
A
匹配必须出现在字符串的开头
Z
匹配必须出现在字符串的结尾或字符串结尾处的换行符(n)前
z
匹配必须出现在字符串的结尾
G
匹配必须出现在上个匹配结束的地方
b
匹配单词的开始或结束的位置
B
匹配不是单词的开始或结束的位置
表达式(?=expression)、(?!expression)、(?<=expression)、和(?<!expression)都是匹配一个位置。下面将详细介绍表达式(?=expression)和(?<=expression)。
(?=expression)又称为零宽度正预测先行断言,它断言自身位置的前面能够匹配表达式expression。以下正则表达式匹配以ed结尾的单词的前面部分:bw+(?=edb)。
(?<=expression)又称为零宽度正回顾后发断言,它断言自身位置的后面能够匹配表达式expression,以下正则表达式匹配以an开头的单词的后面部分,即匹配单词除了字符串an之外的部分:(?<=ban)w+b
2.10 负向零宽度断言
零宽度断言只能指定或匹配一个位置,而负向零宽度断言与零宽度断言正好相反,它能指定或匹配不是一个位置,即所说的反义。特别是在匹配字符串中不包含指定的字符时,负向零宽度断言特别有用,比如要匹配断言字符a之后不能是字符b的表达式为:
bw*a(?!b)w*b
因此该表达式匹配一个单词,并且这个包含字符a并且a后面不是紧随着b
表达式(?!expression)称为负向零宽度断言,它断言自身位置后不能包含expression。以下正则表达式匹配一个z字符串,字符串前三位为字符并且后边不是紧随着数字:bw{3} (?!d+);表达式(?<!expression)称为零宽度回顾后发断言,它断言自身位置的前面不能匹配字符串expression。以下表达式匹配不以数字开头、并且字符串中只包含大写字母、小写字母或下划线。
(?<!d+)[a-z-A-Z]+
2.11匹配选项
匹配选项可以指定正则表达式匹配中的行为,如忽略大小写、处理多行、处理单行、从右到左开始匹配等。常用的匹配选项如下:
表2-7 常用匹配选项
RegexOptions枚举值
内联标志
简单说明
ExplicitCapture
n
只有定义了命名或编号的组才捕获
IgnoreCase
i
不区分大小写
IgnorePatternWhitespace
x
消除模式中的非转义空白并启用由#标记的注释。
MultiLine
m
多行模式,其原理是修改了^和$的含义
SingleLine
s
单行模式,和MultiLine相对应
2.12 优先级
正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。下表从最高到最低说明了各种正则表达式运算符的优先级顺序:
表2-8:优先级说明
运算符
说明
转义符
(), (?:), (?=),[]
括号和中括号
*, +, ?, {n},{n,}, {n,m}
限定符
^, $,anymetacharacter, anycharacter
定位点和序列
|
替换
字符的优先级比替换运算符高,替换运算符允许“m|food”与“m”或“food”匹配。若要匹配“mood”或“food”,请使用括号创建子表达式,从而产生“(m|f)ood”。
2.12 递归匹配
递归匹配在匹配具有嵌套结构的字符串时特别有效。比如算术表达式((1+2)*(3+4))具有嵌套结构,如果要使用正则表达式检查该表达式是否正确,则可以使用递归匹配解决该问题。
这里介绍的平衡组语法是由.NetFramework支持的;其它语言/库不一定支持这种功能,或者支持此功能但需要使用不同的语法。
有时我们需要匹配像( 100 * ( 50+ 15 ) )这样的可嵌套的层次性结构,这时简单地使用(.+)则只会匹配到最左边的左括号和最右边的右括号之间的内容(这里我们讨论的是贪婪模式,懒惰模式也有下面的问题)。假如原来的字符串里的左括号和右括号出现的次数不相等,比如( 5 / ( 3 + 2 ) ) ),那我们的匹配结果里两者的个数也不会相等。有没有办法在这样的字符串里匹配到最长的,配对的括号之间的内容呢?
为了避免(和(把你的大脑彻底搞糊涂,我们还是用尖括号代替圆括号吧。现在我们的问题变成了如何把xx <aa <bbb> <bbb> aa> yy这样的字符串里,最长的配对的尖括号内的内容捕获出来?
这里需要用到以下的语法构造:
(?'group') 把捕获的内容命名为group,并压入堆栈(Stack)
(?'-group') 从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败
(?(group)yes|no)如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分
(?!) 零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败
如果你不是一个程序员(或者你自称程序员但是不知道堆栈是什么东西),你就这样理解上面的三种语法吧:第一个就是在黑板上写一个"group",第二个就是从黑板上擦掉一个"group",第三个就是看黑板上写的还有没有"group",如果有就继续匹配yes部分,否则就匹配no部分。
我们需要做的是每碰到了左括号,就在压入一个"Open",每碰到一个右括号,就弹出一个,到了最后就看看堆栈是否为空--如果不为空那就证明左括号比右括号多,那匹配就应该失败。正则表达式引擎会进行回溯(放弃最前面或最后面的一些字符),尽量使整个表达式得到匹配。
< #最外层的左括号
[^<>]* #最外层的左括号后面的不是括号的内容
(
(
(?'Open'<) #碰到了左括号,在黑板上写一个"Open"
[^<>]* #匹配左括号后面的不是括号的内容
)+
(
(?'-Open'>) #碰到了右括号,擦掉一个"Open"
[^<>]* #匹配右括号后面不是括号的内容
)+
)*
(?(Open)(?!)) #在遇到最外层的右括号前面,判断黑板上还有没有没擦掉的"Open";如果还有,则匹配失败
> #最外层的右括号
平衡组的一个最常见的应用就是匹配HTML,下面这个例子可以匹配嵌套的<div>标签:<div[^>]*>[^<>]*(((?'Open'<div[^>]*>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>.
七十五。
JavaScript正则字符串入门笔记
Posted on2006-11-20 09:30 漂泊雪狼阅读(526) 评论(0) 编辑 收藏
1、元字符及其在正则表达式上下文中的行为的一个完整列表:
字符 | 描述 |
将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'n' 匹配一个换行符。序列 '\' 匹配 "" 而 "(" 则匹配 "("。 | |
^ | 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 'n' 或 'r' 之后的位置。 |
$ | 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 'n' 或 'r' 之前的位置。 |
* | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。 |
+ | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 |
? | 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 |
{n} | n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 |
{n,} | n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。刘, "o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 |
? | 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。 |
. | 匹配除 "n" 之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用象 '[.n]' 的模式。 |
(pattern) | 匹配pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '(' 或 ')'。 |
(?:pattern) | 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 |
(?=pattern) | 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 |
(?!pattern) | 负向预查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 |
x|y | 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 |
[xyz] | 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 |
[^xyz] | 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。 |
[a-z] | 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。 |
[^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。 |
b | 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'erb' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 |
B | 匹配非单词边界。'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 |
cx | 匹配由x指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 |
d | 匹配一个数字字符。等价于 [0-9]。 |
D | 匹配一个非数字字符。等价于 [^0-9]。 |
f | 匹配一个换页符。等价于 x0c 和 cL。 |
n | 匹配一个换行符。等价于 x0a 和 cJ。 |
r | 匹配一个回车符。等价于 x0d 和 cM。 |
s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。 |
S | 匹配任何非空白字符。等价于 [^ fnrtv]。 |
t | 匹配一个制表符。等价于 x09 和 cI。 |
v | 匹配一个垂直制表符。等价于 x0b 和 cK。 |
w | 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。 |
W | 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 |
xn | 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如, 'x41' 匹配 "A"。'x041' 则等价于 'x04' & "1"。正则表达式中可以使用 ASCII 编码。. |
num | 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)1' 匹配两个连续的相同字符。 |
n | 标识一个八进制转义值或一个后向引用。如果 n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。 |
nm | 标识一个八进制转义值或一个后向引用。如果 nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 nm 之前至少有n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 nm 将匹配八进制转义值 nm。 |
nml | 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。 |
un | 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, u00A9 匹配版权符号 (?)。 |
2、正则表达式操作符的优先权顺序:
操作符 | 描述 |
转义符 | |
(), (?:), (?=), [] | 圆括号和方括号 |
*, +, ?, {n}, {n,}, {n,m} | 限定符 |
^, $, anymetacharacter | 位置和顺序 |
| | “或”操作 |
C#的正则字符串规则与上述基本一直,同时MS还提供了一些验证控件,其中RegularExpressionValidator控件还可以使用正则表达式,单本人在使用它的时候,发现使用中华人民共和国电话号码的时候,输入0713-5623000和0755-88445670等实际中存在的电话号码时,却验证不能通过,于是采用自定义的正则表达式,如下((d{3}-)|(d{4})-)?((d{8})|(d{7})),当然还可以自行继续优化,例如加上可选的分机号码等。
分类: 脚本知识
七十六,
js 多种变量定义(对象直接量,数组直接量和函数直接量)
1. 对象直接量:var obj = {x:[1,2],y:23};
2. 数组直接量:var obj=new Object();
obj.x=new Array(1,2);
obj.y=23;
3. 函数直接量:它是一个表达式而不是语句。( function(){} ) ( )无分号
闭包中的函数是语句有分号:
(function(){
//独立作用域
})();有分号
七十七,
在Javascript定义一个函数一般有如下三种方式:
函数关键字(function)语句:
1 .functionfnMethodName(x){alert(x);} 函数字面量(FunctionLiterals):
2. var fnMethodName= function(x) {alert(x);} Function()构造函数:
3. varfnMethodName = new Function ('x','alert(x);')
上面三种方法定义了同一个方法函数fnMethodName,第1种就是最常用的方法,
后两种都是把一个匿名函数复制给变量fnMethodName,
而这个函数是没有名字的,即匿名函数。
七十八,
1.offsetLeft/offsetTop
在页面任一元素的offsetLeft总是找到离其最近的已经定位的元素定位,如果没有,就根据根节点body定位,然后获取其left值。
2.offsetParent
其实offsetParent,返回一个元素离其最近的已经定位的元素,如果没有就返回body,其概念和offsetLeft差不多
七十九,
document.getElementsByTagName(tagname) 方法可返回带有指定标签名的对象的集合。
getElementsByTagName()方法返回元素的顺序是它们在文档中的顺序。
如果把特殊字符串 "*" 传递给getElementsByTagName() 方法,它将返回文档中所有元素的列表,元素排列的顺序就是它们在文档中的顺序。
src=“本文件兄弟节点的文件夹名/文件名”
七十,
定义和用法
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法
stringObject.indexOf(searchvalue,fromindex)
参数 描述
searchvalue 必需。规定需检索的字符串值。
fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
说明
该方法将从头到尾地检索字符串stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。
提示和注释
注释:indexOf() 方法对大小写敏感!
注释:如果要检索的字符串值没有出现,则该方法返回 -1。
七十一,
xmlns是XHTML namespace的缩写。
作用:由于xml允许定义自己的标记,但你定义的标记和其他人定义的标记有可能相同,但表示不同的含义。当文档交换或者共享的时候就容易产生错误。为避免这种错误产生,
xml采用名字空间声明,允许你通过一个网址来识别你的标记。
为什么需要这个xmlns呢,可能是这样的,比如在xhtml中,允许你使用各个不同的DTD文件,有可能不同的DTD文件中包含了相同的标识,那么这样的话就会出现标志冲突的问题,如果使用xmlns的话就可以区别开在不同文件中的相同的标志,例如在a.dtd中和b.dtd中都包含了table,但是如果一个xhtml文件同时包含了这两个dtd文件,而且使用了标志table,这样就会出现标志冲突问题,为了解决标志冲突问题,就可以使用xmlns如下:
<htmlxmlns:a="http://www.a.com">
<htmlxmlns:b="http://www.b.com">
<a:table...>
<b:table...>
这样就可以区分开了使用的是哪个dtd文件中的标志。
七十二,
lang如何标记页面语言的例子:
1. 简体中文页面:htmllang=zh-cmn-Hans
2. 繁体中文页面:htmllang=zh-cmn-Hant
3. 英语页面:htmllang=en
七十三,
str.indexOf('#')!== -1 ) //说明str包含#
七十四,
在JavaScript中 varreEmail=/^w+ ([-+.]w+)* @ w+ ([-.]w+)* . w+ ([-.]w+)* $/; //邮箱检测
w任意大小写英文字母 0-9数字下划线 +为至少出现1个以上字符
[-+.]w+ 任意包含 - + . 及 w字符的组合出现0次或多次
@ 固定符号
w+ 出现至少1次以上 w的字符
[-.]w+ 出现零次或多次这种组合的字符
. 固定符号
结尾:-中划线 .点号 w
七十四,
零宽度负预测先行断言(?!exp),断言此位置的后面不能匹配的表达式exp。
例:d{3} (?!d)匹配三位数字,而且这三位数字的后面不能是数字;
b( (?!abc) w)+b匹配不包含连续字符串abc的单词。
七十五,
正则表达式应用——实例应用
1.验证用户名和密码:("^[a-zA-Z]w{5,15}$")正确格式:"[A-Z][a-z]_[0-9]"组成,并且第一个字必须为字母6~16位;
2.验证电话号码:("^(d{3,4}-)d{7,8}$")正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;
3.验证手机号码:"^1[3|4|5|8][0-9]d{8}$";
4.验证身份证号(15位或18位数字):"\d{14}[[0-9],0-9xX]";
5.验证Email地址:("^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$");
6.只能输入由数字和26个英文字母组成的字符串:("^[A-Za-z0-9]+$");
7.整数或者小数:^[0-9]+.{0,1}[0-9]{0,2}$
8.只能输入数字:"^[0-9]*$"。
9.只能输入n位的数字:"^d{n}$"。
10.只能输入至少n位的数字:"^d{n,}$"。
11.只能输入m~n位的数字:"^d{m,n}$"。
12.只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
13.只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。
14.只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
15.只能输入非零的正整数:"^+?[1-9][0-9]*$"。
16.只能输入非零的负整数:"^-[1-9][]0-9"*$。
17.只能输入长度为3的字符:"^.{3}$"。
18.只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。
19.只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。
20.只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
21.验证是否含有^%&',;=?$"等字符:"[^%&',;=?$x22]+"。
22.只能输入汉字:"^[u4e00-u9fa5]{0,}$"。
23.验证URL:"^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$"。
24.验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"10"~"12"。
25.验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。
26.获取日期正则表达式:d{4}[年|-|.]d{1-12}[月|-|.]d{1-31}日?
评注:可用来匹配大多数年月日信息。
27.匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
28.匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行
29.匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?</>|<.*?/>
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
30.匹配首尾空白字符的正则表达式:^s*|s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
31.匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
32.匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
33.匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10 000 开始
34.匹配中国邮政编码:[1-9]d{5}(?!d)
评注:中国邮政编码为6位数字
35.匹配ip地址:((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)。
评注:提取ip地址时有用
七十六,
在得到文档树结构以后,我们可以操作树中的每一个节点,可以通过两个方法得到树中的节点,分别为nodeFromID和getElementsByTagName。
1. nodeFromID包括两个参数,第一个参数idString用来表示ID值,第二个参数node返回指向和该ID相匹配的NODE节点的接口指针。注意根据XML的技术规定,每一个XML文档中的ID值必须是唯一的而且一个元素(element)仅且只能和一个ID相关联。
2. getElementsByTagName方法有两个参数,
第一个参数tagName表示需要查找的元素(Element)的名称,如果tagName为“*”的话返回文档中所有的元素(Element)。第二个参数为resultList,它实际是指向接口IXMLDOMNodeList的指针,用来返回和tagName(标签名字)相关的所有的Node的集合。
七十七,
定义和用法
substr()方法可在字符串中抽取从 start 下标开始的指定数目的字符。
语法
stringObject.substr(start,length)
参数 | 描述 |
start | 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。 |
length | 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。 |
举例:
<scripttype="text/javascript">
var str="Hello world!"
document.write(str.substr(3,7))
</script>
输出:
lo worl
七十八,
if ( !~classes.indexOf(parts[i]) ) {
判定classes.indexOf(parts[i])=-1,即classes中无parts[i]时执行操作
}
//解释:~classes.indexOf(parts[i]=00000000,即classes.indexOf(parts[i])=1111 1111 (即-1)
大.indexOf(小)
七十九,
一般是在函数内加returnfalse;
1.比如if判断时,如果满足某条件时终止函数运行(后面还有代码)
这是就可以用returnfalse; 而后面的代码将不再执行,
2.为事件处理函数返回false,可以防止默认的事件行为。
八十,JS中Null与Undefined的区别 :
1.Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。
2.Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
3. !undefined=true
八十一,
!! 类型转换, 将对应的类型转换为boolean型,!!0=flase. !!非零值=true.
!! b指的是将b转换为boolea值 去两次非是因为将b转换位boolean值后取了一次非,所以得到的值正好相反,再取一次反回来。双重否定表肯定。
八十二,
<A HREF="javascript:void(0) ">单此处什么也不会发生</A>
下面的代码创建了一个超级链接,用户单时会提交表单。
<A HREF="javascript:void( document.form.submit( ) )">单此处提交表单</A>
a href=#与 ahref=javascript:void(0) 的区别链接的几种办法
#包含了一个位置信息,默认的锚是#top 也就是网页的上端
而javascript:void(0) 仅仅表示一个死链接
八十三,html嵌用图片:<link rel="icon即可 " href="路径到到本文件名"/>
shortcuticon,特指浏览器中地址栏左侧显示的图标,一般大小为16x16,后缀名为.icon;
例<link rel="shortcut icon " href="/images/58_serach_tittle.icon " />
icon,指的是图标,格式可为PNGGIFJPEG,尺寸一般为16x16、24x24、36x36等。
例:<link rel="icon " href="/images/58_serach_tittle.png" />
上两种情况都是rel=" icon 。
rel属性(relation),描述了当前页面与href所指定文档的关系
icon是一种图标格式,用于系统图标、软件图标等,这种图标扩展名为*.icon、*.ico。常见的软件或windows桌面上的那些图标一般都是ICON格式的。
*******************************************************************************
rel属性值
值 | 描述 |
alternate | 文档的替代版本(比如打印页、翻译或镜像)。 |
stylesheet | 文档的外部样式表。 |
start | 集合中的第一个文档。 |
next | 集合中的下一个文档。 |
prev | 集合中的上一个文档。 |
contents | 文档的目录。 |
index | 文档的索引。 |
glossary | 在文档中使用的词汇的术语表(解释)。 |
copyright | 包含版权信息的文档。 |
chapter | 文档的章。 |
section | 文档的节。 |
subsection | 文档的小节。 |
appendix | 文档的附录。 |
help | 帮助文档。 |
bookmark | 相关文档。 |
******************************************************************************
实际上,XHTML 与 HTML 4.01 标准没有太多的不同。
它们最主要的不同:
1.XHTML 元素必须被正确地嵌套。
错误:<p><span>this is example.</p></span>
正确:<p><span>this is example.</span></p>
2.XHTML 元素必须被关闭。
错误:<p>this is example.
正确:<p>this is example.</p>
3.标签名必须用小写字母。
错误:<P>this is example.<P>
正确:<p>this is example.</p>
3.1空标签也必须被关闭
错误:<br>
正确:<br/>
4.XHTML 文档必须拥有根元素。
所有的 XHTML 元素必须被嵌套于 <html> 根元素中。
******************************************************************************
nodejs express 加载html模板(2013-09-17 16:57:08)转载▼
标签: it 分类: node
在nodejs中如使用express框架,她默认的是ejs和jade渲染模板。由于我在使用的时候觉得她的代码书写方式很不爽还是想用html的形式去书写,于是我找了使用了html模板。
直接上代码,主要的是在app.engine('.html', ejs.__express);app.set('view engine', 'html');这两句。
var http = require('http'),
express = require('express'),
fs = require('fs'),
ejs = require('ejs'),
path = require('path'),
zmq = require('zmq'),//http://zeromq.org/
msgpack = require('msgpack');//解压缩模块
var app = express();
app.set('port', process.env.PORT || 1235);
app.set('views', __dirname +'/sunxu/views');
app.engine('.html', ejs.__express);
app.set('view engine', 'html');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname,'sunxu/public')));
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/', function(req, res){
res.render('index', {title:'paint title'});
});
app.get('/users', function(req, res){
res.render('users', {title: 'usersmember'});
});
var http_server =http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});//创建服务器监听
******************************************************************************
Document Type Definition---文档类型定义—DTD有3种:
S:Strict、严格的,
T:Transitional、过渡性的,
F:Frameset、框架的
******************************************************************************
input标签属性:
属性 | 值 | 描述 | DTD |
accept | mime_type | 规定通过文件上传来提交的文件的类型。 | STF |
align | · left · right · top · middle · bottom | 不赞成使用。规定图像输入的对齐方式。 | TF |
alt | text | 定义图像输入的替代文本。 | STF |
checked | checked | 规定此 input 元素首次加载时应当被选中。 | STF |
disabled | disabled | 当 input 元素加载时禁用此元素。 | STF |
maxlength | number | 规定输入字段中的字符的最大长度。 | STF |
name | field_name | 定义 input 元素的名称。 | STF |
readonly | readonly | 规定输入字段为只读。 | STF |
size | number_of_char | 定义输入字段的宽度。 | STF |
src | URL | 定义以提交按钮形式显示的图像的 URL。 | STF |
type | · button · checkbox · file · hidden · image · password · radio · reset · submit · text | 规定 input 元素的类型。 | STF |
value | value | 规定 input 元素的值。 | STF |
******************************************************************************
Hint:提示。
JS Hint:javaScript提示。
即:来检测在JavaScript代码错误和潜在的问题。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
ES5 option is now set per default:
ES5选项现在设置默认的
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
<form method="get"action="index.php"> //表单 传递方式 get 向INDEX.PHP提交
<input id="text" type="text" name="url"value=""/> //text文本框 名字叫做 url
<input id="button" type="submit" value="提交"/> //submit 提交
</form>
当你点击button这个标签的时候,这个form表单就会把文本框(text)中的内容提交到action中的文件index.php中。
index.php中写数据库查询操作。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
<formaction="form_action.asp" enctype="text/plain">
<p> name: <input type="text" name="fname"/></p>
<input type="submit" value="Submit" />
</form>
enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。encode
默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
最后
以上就是英俊八宝粥为你收集整理的JavaScript.笔记的全部内容,希望文章能够帮你解决JavaScript.笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复