- 事件
? - 表單提交(掌握)
? ? "onsubmit"
? - 單擊事件(掌握)
? ? "onclick"
? - 頁面加載成功事件(掌握)
? ? "onload"
? - 焦點事件:(掌握)
? ? - 獲取焦點
? ? ? "onfocus"
? ? - 失去焦點
? ? ? "onblur"
? - 表單事件(了解)
? ? - ondblclick 雙擊事件
? ? - onreset;? ? ? ? ? ? ? ? 重置
? ? - onchange;? ? ? ? ? ? 改變(熟練使用)
? - 鼠標(biāo)事件:(了解)
? ? - onmouseover 懸停
? ? - onmouseout 移出
? ? - onmousedown 按下
? ? - onmouseup 彈起
? ? - onmousemove 移動
? - 鍵盤事件:(了解)
? ? - onkeydown 按下
? ? - onkeyup 彈起
? ? - onkeypress 按下并彈起
- DOM(文檔對象模型):操作html文檔
? "html加載到內(nèi)存中時,是以一棵樹的形式存在的,可以通過document操作所有的節(jié)點"
? - html文檔與dom樹的關(guān)系:理解
? ? - html里所有的標(biāo)簽、標(biāo)簽的屬性、文本都會轉(zhuǎn)換成dom樹里的節(jié)點
? ? ? - a.整個html文檔抽象成的對象,叫作document? ? 文檔節(jié)點
? ? ? - b.標(biāo)簽轉(zhuǎn)換成的節(jié)點對象,叫作Element? ? ? ? ? 元素節(jié)點
? ? ? - c.標(biāo)簽屬性轉(zhuǎn)換成的節(jié)點對象,叫作Attribute? 屬性節(jié)點
? ? ? - d.文本轉(zhuǎn)換成的節(jié)點對象,叫作Text? ? ? ? ? ? ? ? ? 文本節(jié)點
? - 查詢(獲取元素對象)★★
? ? - document.getElementById("id");? 獲取一個元素對象
? ? - document.getElementsByTagName("標(biāo)簽名"); 獲取一種元素對象? 數(shù)組接收
? ? - document.getElementsByClassName("class屬性值"); 獲取一類元素對象 數(shù)組接收
? ? - document.getElementsByName("name屬性值"); 獲取多個元素對象 數(shù)組接收
? - 元素(element)
? ? - 方式1簡單方法操作:★★
? ? ? - 元素.innerHTML = "<h1>文本內(nèi)容</h1>";? ? 添加
? ? ? - 元素.innerHTML = "";? ? 刪除
? ? - 方式2擴展:了解
? ? ? - 添加
? ? ? ? - var ele? =? document.createElement("標(biāo)簽名"); 創(chuàng)建元素節(jié)點(創(chuàng)建一個標(biāo)簽)
? ? ? ? ? "var ele? =? document.createElement("h1");? ? <h1></h1>"
? ? ? ? - var text =? document.createTextNode("值"); 創(chuàng)建文本節(jié)點(創(chuàng)建一個值)
? ? ? ? ? "var text =? document.createTextNode("");? "客""
? ? ? ? - 元素節(jié)點.appendChild(文本節(jié)點); ? ? ? ? ? ? ? ? 給元素節(jié)點添加文本信息
? ? ? ? ? "ele.appendChild(text);? ? <h1>客</h1>"
? ? ? ? - 元素.appendChild(子元素對象); 將元素節(jié)點追加到指定標(biāo)簽中
? ? ? ? ? "將創(chuàng)建好的h1標(biāo)簽添加到頁面的指定標(biāo)簽中"
? ? ? - 刪除
? ? ? ? - 元素.remove();? 自殺
? - 屬性:(attribute)
? ? - 方式1簡單方法操作:★★
? ? ? - 元素.屬性名稱; ? ? ? ? ? ? ? ? 獲取指定屬性的值
? ? ? - 元素.屬性名稱 = "屬性值"; 設(shè)置指定屬性的值
? ? - 方式2擴展:了解
? ? ? - 查(獲取):
? ? ? ? - 元素.getAttribute("屬性名稱");
? ? ? - 增:
? ? ? ? - 元素.setAttribute("屬性名稱","屬性值");
? ? ? - 刪:
? ? ? ? - 元素.removeAttribute("屬性名稱");
- 引用數(shù)據(jù)類型(對象)
? - 注意:string,number,boolen稱為偽對象,可以直接使用相應(yīng)的方法或?qū)傩?/p>
? - Array:數(shù)組
? ? - 語法:
? ? ? - new Array();? 創(chuàng)建空數(shù)組
? ? ? - new Array(3);? 創(chuàng)建包含指定個數(shù)的數(shù)組
? ? ? - new Array(ele1,ele2...);? 創(chuàng)建包含指定元素的數(shù)組
? ? - 特征:
? ? ? - 數(shù)組長度可變
? ? ? - 數(shù)組中可以存放任何類型的值
? ? - 常用屬性
? ? ? - length? 長度
? ? - 常用方法
? ? ? - join("分隔符");? 按指定的分隔符分割
? ? ? - shift(); 刪除并返回數(shù)組中的第一個元素
? ? ? - unshift();? 向數(shù)組的開頭添加一個或多個元素,并返回新數(shù)組的長度
? ? ? - pop();? 刪除并返回數(shù)組中的最后一個元素
? ? ? - push();? 向數(shù)組的末尾添加一個或多個元素,返回新數(shù)組的長度
? ? ? - sort();? 操作數(shù)組結(jié)構(gòu)? 對數(shù)組進行排序
? ? ? ? "http://初始化設(shè)置元素的時候,排序不起作用的"
? ? ? - reverse();? 顛倒數(shù)組中元素的順序
? - String
? ? - 語法
? ? ? - new String();? 返回一個object對象
? ? - 常用屬性
? ? ? - length
? ? - 常用方法
? ? ? - substring(startindex,endindex);
? ? ? - slice(startindex,endindex);
? ? ? - charAt();
? ? ? - split();
? - Number
? ? - 語法:
? ? ? - new Number(); 返回一個object對象
? - Boolean
? ? - new Boolean();? 返回一個object對象
? ? - Boolean(值);? 將給定值轉(zhuǎn)為Boolean類型
? - Math
? ? - 常用操作
? ? ? - Math.round();
? ? ? - Math.PI;
? ? ? - Math.random();
? - Date
? ? - 語法
? ? ? - new Date();
? ? - 常用方法
? ? ? - toLocaleString();? 轉(zhuǎn)為字符串
? - reg(正則)
? ? - 1.編寫正則表達式
? ? ? - 格式:? /^正則表達式$/
? ? - 2.校驗
? ? ? - 正則表達式.test();? 返回boolean類型的值
? - 全局函數(shù)
? ? - parseInt();? 嘗試轉(zhuǎn)換為Int類型
? ? - parseFloat();? 嘗試轉(zhuǎn)換為float類型
? ? - String(); 強制轉(zhuǎn)換為String類型
? ? - Number(); 強制轉(zhuǎn)換為number類型
? ? - encodeURI();? ? 編碼
? ? - decodeURI();? 解碼
? ? - eval();? 將字符串轉(zhuǎn)換稱js可以執(zhí)行的代碼
/*
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>正則表達式,常用的正則表達式,js正則表達式,正則表達式數(shù)字,正則表達式空格</title>
<meta name="Description" content="正則表達式(英文:Regular Expression)在計算機科學(xué)中,是指一個用來描述或者匹配一系列符合某個句法規(guī)則的字符串的單個字符串。正則表達式通??s寫成“regex”,單數(shù)有regexp、regex,復(fù)數(shù)有regexps、regexes、regexen。" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-Language" content="zh-CN" />
<base target="_blank" />
<link rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" />
<style type="text/css" rel="stylesheet" media="screen" />
/* Copyright (c) 2006-2009 114.xixik.com All rights reserved. */
table,td,th{
border-collapse:collapse;
font-size:14px;
}
table{
width:778px;
}
.code{
padding:2px;
border:1px #CCC solid;
background-color:#e5e5e5;
font-family:Fixedsys;
}
</style>
</head>
<body>
<div class="commonContainer">
<div class="noborder">
<div class="mainContainer">
<h2>常用的正則表達式</h2>
<P><STRONG>常用正則表達式</STRONG></P>
<P>正則表達式用于字符串處理、表單驗證等場合,實用高效?,F(xiàn)將一些常用的表達式收集于此,以備不時之需。</P>
<P>用戶名:/^[a-z0-9_-]{3,16}$/</P>
<P>密碼:/^[a-z0-9_-]{6,18}$/</P>
<P>十六進制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/</P>
<P>電子郵箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/</P>
<P>URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/</P>
<P>IP 地址:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/</P>
<P>HTML 標(biāo)簽:/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/</P>
<P>Unicode編碼中的漢字范圍:/^[u4e00-u9fa5],{0,}$/</P>
<P>匹配中文字符的正則表達式: [\u4e00-\u9fa5]<BR>評注:匹配中文還真是個頭疼的事,有了這個表達式就好辦了</P>
<P>匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]<BR>評注:可以用來計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1)</P>
<P>匹配空白行的正則表達式:\n\s*\r<BR>評注:可以用來刪除空白行</P>
<P>匹配HTML標(biāo)記的正則表達式:<(\S*?)[^>]*>.*?</\1>|<.*? /><BR>評注:網(wǎng)上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對于復(fù)雜的嵌套標(biāo)記依舊無能為力</P>
<P>匹配首尾空白字符的正則表達式:^\s*|\s*$<BR>評注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式</P>
<P>匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*<BR>評注:表單驗證時很實用</P>
<P>匹配網(wǎng)址URL的正則表達式:[a-zA-z]+://[^\s]*<BR>評注:網(wǎng)上流傳的版本功能很有限,上面這個基本可以滿足需求</P>
<P>匹配帳號是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$<BR>評注:表單驗證時很實用</P>
<P>匹配國內(nèi)電話號碼:\d{3}-\d{8}|\d{4}-\d{7}<BR>評注:匹配形式如 0511-4405222 或 021-87888822</P>
<P>匹配騰訊QQ號:[1-9][0-9]{4,}<BR>評注:騰訊QQ號從10000開始</P>
<P>匹配中國大陸郵政編碼:[1-9]\d{5}(?!\d)<BR>評注:中國大陸郵政編碼為6位數(shù)字</P>
<P>匹配身份證:\d{15}|\d{18}<BR>評注:中國大陸的身份證為15位或18位</P>
<P>匹配ip地址:\d+\.\d+\.\d+\.\d+<BR>評注:提取ip地址時有用</P>
<P>匹配特定數(shù)字:<BR>^[1-9]\d*$ //匹配正整數(shù)<BR>^-[1-9]\d*$ //匹配負整數(shù)<BR>^-?[1-9]\d*$ //匹配整數(shù)<BR>^[1-9]\d*|0$ //匹配非負整數(shù)(正整數(shù) + 0)<BR>^-[1-9]\d*|0$ //匹配非正整數(shù)(負整數(shù) + 0)<BR>^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮點數(shù)<BR>^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配負浮點數(shù)<BR>^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮點數(shù)<BR>^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非負浮點數(shù)(正浮點數(shù) + 0)<BR>^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點數(shù)(負浮點數(shù) + 0)<BR>評注:處理大量數(shù)據(jù)時有用,具體應(yīng)用時注意修正</P>
<P>匹配特定字符串:<BR>^[A-Za-z]+$ //匹配由26個英文字母組成的字符串<BR>^[A-Z]+$ //匹配由26個英文字母的大寫組成的字符串<BR>^[a-z]+$ //匹配由26個英文字母的小寫組成的字符串<BR>^[A-Za-z0-9]+$ //匹配由數(shù)字和26個英文字母組成的字符串<BR>^\w+$ //匹配由數(shù)字、26個英文字母或者下劃線組成的字符串</P>
<h2>表達式全集</h2>
<P>正則表達式有多種不同的風(fēng)格。下表是在PCRE中元字符及其在正則表達式上下文中的行為的一個完整列表:</P>
<table width="778" borderColor=#cccccc cellSpacing=1 cellPadding=2 border=1>
<tr>
<th>字符</th>
<th>描述</th>
</tr>
<tr>
<th style="text-align:center;">\</th>
<td>將下一個字符標(biāo)記為一個特殊字符、或一個原義字符、或一個向后引用、或一個八進制轉(zhuǎn)義符。例如,“<code>n</code>”匹配字符“<code>n</code>”?!?lt;code>\n</code>”匹配一個換行符。序列“<code>\\</code>”匹配“<code>\</code>”而“<code>\(</code>”則匹配“<code>(</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">^</th>
<td>匹配輸入字符串的開始位置。如果設(shè)置了RegExp對象的Multiline屬性,^也匹配“<code>\n</code>”或“<code>\r</code>”之后的位置。</td>
</tr>
<tr>
<th style="text-align:center;">$</th>
<td>匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp對象的Multiline屬性,$也匹配“<code>\n</code>”或“<code>\r</code>”之前的位置。</td>
</tr>
<tr>
<th style="text-align:center;">*</th>
<td>匹配前面的子表達式零次或多次。例如,zo*能匹配“<code>z</code>”以及“<code>zoo</code>”。*等價于{0,}。</td>
</tr>
<tr>
<th style="text-align:center;">+</th>
<td>匹配前面的子表達式一次或多次。例如,“<code>zo+</code>”能匹配“<code>zo</code>”以及“<code>zoo</code>”,但不能匹配“<code>z</code>”。+等價于{1,}。</td>
</tr>
<tr>
<th style="text-align:center;">?</th>
<td>匹配前面的子表達式零次或一次。例如,“<code>do(es)?</code>”可以匹配“<code>do</code>”或“<code>does</code>”中的“<code>do</code>”。?等價于{0,1}。</td>
</tr>
<tr>
<th style="text-align:center;">{<span style="font-family:Times New Roman; font-style:italic;">n</span>}</th>
<td><span style="font-family:Times New Roman; font-style:italic;">n</span>是一個非負整數(shù)。匹配確定的<span style="font-family:Times New Roman; font-style:italic;">n</span>次。例如,“<code>o{2}</code>”不能匹配“<code>Bob</code>”中的“<code>o</code>”,但是能匹配“<code>food</code>”中的兩個o。</td>
</tr>
<tr>
<th style="text-align:center;">{<span style="font-family:Times New Roman; font-style:italic;">n</span>,}</th>
<td><span style="font-family:Times New Roman; font-style:italic;">n</span>是一個非負整數(shù)。至少匹配<span style="font-family:Times New Roman; font-style:italic;">n</span>次。例如,“<code>o{2,}</code>”不能匹配“<code>Bob</code>”中的“<code>o</code>”,但能匹配“<code>foooood</code>”中的所有o?!?lt;code>o{1,}</code>”等價于“<code>o+</code>”?!?lt;code>o{0,}</code>”則等價于“<code>o*</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">{<span style="font-family:Times New Roman; font-style:italic;">n</span>,<span style="font-family:Times New Roman; font-style:italic;">m</span>}</th>
<td><span style="font-family:Times New Roman; font-style:italic;">m</span>和<span style="font-family:Times New Roman; font-style:italic;">n</span>均為非負整數(shù),其中<span style="font-family:Times New Roman; font-style:italic;">n</span><=<span style="font-family:Times New Roman; font-style:italic;">m</span>。最少匹配<span style="font-family:Times New Roman; font-style:italic;">n</span>次且最多匹配<span style="font-family:Times New Roman; font-style:italic;">m</span>次。例如,“<code>o{1,3}</code>”將匹配“<code>fooooood</code>”中的前三個o。“<code>o{0,1}</code>”等價于“<code>o?</code>”。請注意在逗號和兩個數(shù)之間不能有空格。</td>
</tr>
<tr>
<th style="text-align:center;">?</th>
<td>當(dāng)該字符緊跟在任何一個其他限制符(*,+,?,{<span style="font-family:Times New Roman; font-style:italic;">n</span>},{<span style="font-family:Times New Roman; font-style:italic;">n</span>,},{<span style="font-family:Times New Roman; font-style:italic;">n</span>,<span style="font-family:Times New Roman; font-style:italic;">m</span>})后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對于字符串“<code>oooo</code>”,“<code>o+?</code>”將匹配單個“<code>o</code>”,而“<code>o+</code>”將匹配所有“<code>o</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">.</th>
<td>匹配除“<code>\</code><span style="font-family:Times New Roman; font-style:italic;"><code>n</code></span>”之外的任何單個字符。要匹配包括“<code>\</code><span style="font-family:Times New Roman; font-style:italic;"><code>n</code></span>”在內(nèi)的任何字符,請使用像“<code>[.\</code><span style="font-family:Times New Roman; font-style:italic;"><code>n</code></span><code>]</code>”的模式。</td>
</tr>
<tr>
<th style="text-align:center;">(pattern)</th>
<td>匹配pattern并獲取這一匹配。所獲取的匹配可以從產(chǎn)生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。要匹配圓括號字符,請使用“<code>\(</code>”或“<code>\)</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">(?:pattern)</th>
<td>匹配pattern但不獲取匹配結(jié)果,也就是說這是一個非獲取匹配,不進行存儲供以后使用。這在使用或字符“<code>(|)</code>”來組合一個模式的各個部分是很有用。例如“<code>industr(?:y|ies)</code>”就是一個比“<code>industry|industries</code>”更簡略的表達式。</td>
</tr>
<tr>
<th style="text-align:center;">(?=pattern)</th>
<td>正向預(yù)查,在任何匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如,“<code>Windows(?=95|98|NT|2000)</code>”能匹配“<code>Windows2000</code>”中的“<code>Windows</code>”,但不能匹配“<code>Windows3.1</code>”中的“<code>Windows</code>”。預(yù)查不消耗字符,也就是說,在一個匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始。</td>
</tr>
<tr>
<th style="text-align:center;">(?!pattern)</th>
<td>負向預(yù)查,在任何不匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如“<code>Windows(?!95|98|NT|2000)</code>”能匹配“<code>Windows3.1</code>”中的“<code>Windows</code>”,但不能匹配“<code>Windows2000</code>”中的“<code>Windows</code>”。預(yù)查不消耗字符,也就是說,在一個匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始</td>
</tr>
<tr>
<th style="text-align:center;">x|y</th>
<td>匹配x或y。例如,“<code>z|food</code>”能匹配“<code>z</code>”或“<code>food</code>”?!?lt;code>(z|f)ood</code>”則匹配“<code>zood</code>”或“<code>food</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">[xyz]</th>
<td>字符集合。匹配所包含的任意一個字符。例如,“<code>[abc]</code>”可以匹配“<code>plain</code>”中的“<code>a</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">[^xyz]</th>
<td>負值字符集合。匹配未包含的任意字符。例如,“<code>[^abc]</code>”可以匹配“<code>plain</code>”中的“<code>p</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">[a-z]</th>
<td>字符范圍。匹配指定范圍內(nèi)的任意字符。例如,“<code>[a-z]</code>”可以匹配“<code>a</code>”到“<code>z</code>”范圍內(nèi)的任意小寫字母字符。</td>
</tr>
<tr>
<th style="text-align:center;">[^a-z]</th>
<td>負值字符范圍。匹配任何不在指定范圍內(nèi)的任意字符。例如,“<code>[^a-z]</code>”可以匹配任何不在“<code>a</code>”到“<code>z</code>”范圍內(nèi)的任意字符。</td>
</tr>
<tr>
<th style="text-align:center;">\b</th>
<td>匹配一個單詞邊界,也就是指單詞和空格間的位置。例如,“<code>er\b</code>”可以匹配“<code>never</code>”中的“<code>er</code>”,但不能匹配“<code>verb</code>”中的“<code>er</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">\B</th>
<td>匹配非單詞邊界。“<code>er\B</code>”能匹配“<code>verb</code>”中的“<code>er</code>”,但不能匹配“<code>never</code>”中的“<code>er</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">\cx</th>
<td>匹配由x指明的控制字符。例如,\cM匹配一個Control-M或回車符。x的值必須為A-Z或a-z之一。否則,將c視為一個原義的“<code>c</code>”字符。</td>
</tr>
<tr>
<th style="text-align:center;">\d</th>
<td>匹配一個數(shù)字字符。等價于[0-9]。</td>
</tr>
<tr>
<th style="text-align:center;">\D</th>
<td>匹配一個非數(shù)字字符。等價于[^0-9]。</td>
</tr>
<tr>
<th style="text-align:center;">\f</th>
<td>匹配一個換頁符。等價于\x0c和\cL。</td>
</tr>
<tr>
<th style="text-align:center;">\n</th>
<td>匹配一個換行符。等價于\x0a和\cJ。</td>
</tr>
<tr>
<th style="text-align:center;">\r</th>
<td>匹配一個回車符。等價于\x0d和\cM。</td>
</tr>
<tr>
<th style="text-align:center;">\s</th>
<td>匹配任何空白字符,包括空格、制表符、換頁符等等。等價于[\f\n\r\t\v]。</td>
</tr>
<tr>
<th style="text-align:center;">\S</th>
<td>匹配任何非空白字符。等價于[^\f\n\r\t\v]。</td>
</tr>
<tr>
<th style="text-align:center;">\t</th>
<td>匹配一個制表符。等價于\x09和\cI。</td>
</tr>
<tr>
<th style="text-align:center;">\v</th>
<td>匹配一個垂直制表符。等價于\x0b和\cK。</td>
</tr>
<tr>
<th style="text-align:center;">\w</th>
<td>匹配包括下劃線的任何單詞字符。等價于“<code>[A-Za-z0-9_]</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">\W</th>
<td>匹配任何非單詞字符。等價于“<code>[^A-Za-z0-9_]</code>”。</td>
</tr>
<tr>
<th style="text-align:center;">\x<span style="font-family:Times New Roman; font-style:italic;">n</span></th>
<td>匹配<span style="font-family:Times New Roman; font-style:italic;">n</span>,其中<span style="font-family:Times New Roman; font-style:italic;">n</span>為十六進制轉(zhuǎn)義值。十六進制轉(zhuǎn)義值必須為確定的兩個數(shù)字長。例如,“<code>\x41</code>”匹配“<code>A</code>”。“<code>\x041</code>”則等價于“<code>\x04&1</code>”。正則表達式中可以使用ASCII編碼。.</td>
</tr>
<tr>
<th style="text-align:center;">\<span style="font-family:Times New Roman; font-style:italic;">num</span></th>
<td>匹配<span style="font-family:Times New Roman; font-style:italic;">num</span>,其中<span style="font-family:Times New Roman; font-style:italic;">num</span>是一個正整數(shù)。對所獲取的匹配的引用。例如,“<code>(.)\1</code>”匹配兩個連續(xù)的相同字符。</td>
</tr>
<tr>
<th style="text-align:center;">\<span style="font-family:Times New Roman; font-style:italic;">n</span></th>
<td>標(biāo)識一個八進制轉(zhuǎn)義值或一個向后引用。如果\<span style="font-family:Times New Roman; font-style:italic;">n</span>之前至少<span style="font-family:Times New Roman; font-style:italic;">n</span>個獲取的子表達式,則<span style="font-family:Times New Roman; font-style:italic;">n</span>為向后引用。否則,如果<span style="font-family:Times New Roman; font-style:italic;">n</span>為八進制數(shù)字(0-7),則<span style="font-family:Times New Roman; font-style:italic;">n</span>為一個八進制轉(zhuǎn)義值。</td>
</tr>
<tr>
<th style="text-align:center;">\<span style="font-family:Times New Roman; font-style:italic;">nm</span></th>
<td>標(biāo)識一個八進制轉(zhuǎn)義值或一個向后引用。如果\<span style="font-family:Times New Roman; font-style:italic;">nm</span>之前至少有<span style="font-family:Times New Roman; font-style:italic;">nm</span>個獲得子表達式,則<span style="font-family:Times New Roman; font-style:italic;">nm</span>為向后引用。如果\<span style="font-family:Times New Roman; font-style:italic;">nm</span>之前至少有<span style="font-family:Times New Roman; font-style:italic;">n</span>個獲取,則<span style="font-family:Times New Roman; font-style:italic;">n</span>為一個后跟文字<span style="font-family:Times New Roman; font-style:italic;">m</span>的向后引用。如果前面的條件都不滿足,若<span style="font-family:Times New Roman; font-style:italic;">n</span>和<span style="font-family:Times New Roman; font-style:italic;">m</span>均為八進制數(shù)字(0-7),則\<span style="font-family:Times New Roman; font-style:italic;">nm</span>將匹配八進制轉(zhuǎn)義值<span style="font-family:Times New Roman; font-style:italic;">nm</span>。</td>
</tr>
<tr>
<th style="text-align:center;">\<span style="font-family:Times New Roman; font-style:italic;">nml</span></th>
<td>如果<span style="font-family:Times New Roman; font-style:italic;">n</span>為八進制數(shù)字(0-3),且<span style="font-family:Times New Roman; font-style:italic;">m和l</span>均為八進制數(shù)字(0-7),則匹配八進制轉(zhuǎn)義值<span style="font-family:Times New Roman; font-style:italic;">nm</span>l。</td>
</tr>
<tr>
<th style="text-align:center;">\u<span style="font-family:Times New Roman; font-style:italic;">n</span></th>
<td>匹配<span style="font-family:Times New Roman; font-style:italic;">n</span>,其中<span style="font-family:Times New Roman; font-style:italic;">n</span>是一個用四個十六進制數(shù)字表示的Unicode字符。例如,\u00A9匹配版權(quán)符號(?)。</td>
</tr>
</table>
<p>以下是以PHP的語法所寫的示例 </p>
<p>驗證字符串是否只含數(shù)字與英文,字符串長度并在4~16個字符之間 </p>
<DIV dir=ltr style="TEXT-ALIGN: left">
<DIV style="FONT-FAMILY: monospace"><PRE class=de1><SPAN class=kw2><STRONG><?php</STRONG></SPAN>
<SPAN class=re0><FONT color=#000088>$str</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=</FONT></SPAN> <SPAN class=st_h><FONT color=#0000ff>'a1234'</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>
<SPAN class=kw1><FONT color=#b1b100>if</FONT></SPAN> <SPAN class=br0><FONT color=#009900>(</FONT></SPAN><SPAN class=kw3><FONT color=#990000>preg_match</FONT></SPAN><SPAN class=br0><FONT color=#009900>(</FONT></SPAN><SPAN class=st0><FONT color=#0000ff>"^[a-zA-Z0-9]{4,16}$"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>,</FONT></SPAN> <SPAN class=re0><FONT color=#000088>$str</FONT></SPAN><FONT color=#009900><SPAN class=br0>)</SPAN><SPAN class=br0>)</SPAN></FONT> <SPAN class=br0><FONT color=#009900>{</FONT></SPAN>
? ? <SPAN class=kw1><FONT color=#b1b100>echo</FONT></SPAN> <SPAN class=st0><FONT color=#0000ff>"驗證成功"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>
<SPAN class=br0><FONT color=#009900>}</FONT></SPAN> <SPAN class=kw1><FONT color=#b1b100>else</FONT></SPAN> <SPAN class=br0><FONT color=#009900>{</FONT></SPAN>
? ? <SPAN class=kw1><FONT color=#b1b100>echo</FONT></SPAN> <SPAN class=st0><FONT color=#0000ff>"驗證失敗"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>
<SPAN class=br0><FONT color=#009900>}</FONT></SPAN>
<SPAN class=sy1><STRONG>?></STRONG></SPAN>
</PRE></DIV></DIV>
<p>簡易的臺灣身份證字號驗證 </p>
<DIV class=mw-geshi dir=ltr style="TEXT-ALIGN: left">
<DIV class="php source-php" style="FONT-FAMILY: monospace"><PRE class=de1><SPAN class=kw2><STRONG><?php</STRONG></SPAN>
<SPAN class=re0><FONT color=#000088>$str</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=</FONT></SPAN> <SPAN class=st_h><FONT color=#0000ff>'a1234'</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>
<SPAN class=kw1><FONT color=#b1b100>if</FONT></SPAN> <SPAN class=br0><FONT color=#009900>(</FONT></SPAN><SPAN class=kw3><FONT color=#990000>preg_match</FONT></SPAN><SPAN class=br0><FONT color=#009900>(</FONT></SPAN><SPAN class=st0><FONT color=#0000ff>"/^\w[12]\d{8}$/"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>,</FONT></SPAN> <SPAN class=re0><FONT color=#000088>$str</FONT></SPAN><FONT color=#009900><SPAN class=br0>)</SPAN><SPAN class=br0>)</SPAN></FONT> <SPAN class=br0><FONT color=#009900>{</FONT></SPAN>
? ? <SPAN class=kw1><FONT color=#b1b100>echo</FONT></SPAN> <SPAN class=st0><FONT color=#0000ff>"驗證成功"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>
<SPAN class=br0><FONT color=#009900>}</FONT></SPAN> <SPAN class=kw1><FONT color=#b1b100>else</FONT></SPAN> <SPAN class=br0><FONT color=#009900>{</FONT></SPAN>
? ? <SPAN class=kw1><FONT color=#b1b100>echo</FONT></SPAN> <SPAN class=st0><FONT color=#0000ff>"驗證失敗"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>
<SPAN class=br0><FONT color=#009900>}</FONT></SPAN>
<SPAN class=sy1><STRONG>?></STRONG></SPAN>
</PRE></DIV></DIV>
<p>以下示例是用 Perl 語言寫的,與上面的示例功能相同 </p>
<DIV class=mw-geshi dir=ltr style="TEXT-ALIGN: left">
<DIV class="perl source-perl" style="FONT-FAMILY: monospace"><PRE class=de1><SPAN class=kw3><FONT color=#000066>print</FONT></SPAN> <SPAN class=re0><FONT color=#0000ff>$str</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"a1234"</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=~</FONT></SPAN> <SPAN class=kw3><FONT color=#000066>m</FONT></SPAN><SPAN class=sy0><FONT color=#339933>:^</FONT></SPAN><SPAN class=br0><FONT color=#009900>[</FONT></SPAN>a<SPAN class=sy0><FONT color=#339933>-</FONT></SPAN>zA<SPAN class=sy0><FONT color=#339933>-</FONT></SPAN>Z0<SPAN class=sy0><FONT color=#339933>-</FONT></SPAN><SPAN class=nu0><FONT color=#cc66cc>9</FONT></SPAN><FONT color=#009900><SPAN class=br0>]</SPAN><SPAN class=br0>{</SPAN></FONT><SPAN class=nu0><FONT color=#cc66cc>4</FONT></SPAN><SPAN class=sy0><FONT color=#339933>,</FONT></SPAN><SPAN class=nu0><FONT color=#cc66cc>16</FONT></SPAN><SPAN class=br0><FONT color=#009900>}</FONT></SPAN><SPAN class=co5><FONT color=#0000ff>$:</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>?</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"COMFIRM"</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>:</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"FAILED"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>
</PRE></DIV></DIV>
<DIV class=mw-geshi dir=ltr style="TEXT-ALIGN: left">
<DIV class="perl source-perl" style="FONT-FAMILY: monospace"><PRE class=de1><SPAN class=kw3><FONT color=#000066>print</FONT></SPAN> <SPAN class=re0><FONT color=#0000ff>$str</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"a1234"</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>=~</FONT></SPAN> <SPAN class=kw3><FONT color=#000066>m</FONT></SPAN><SPAN class=st0><FONT color=#ff0000>"^</FONT><SPAN class=es0><STRONG><FONT color=#000099>\w</FONT></STRONG></SPAN><FONT color=#ff0000>[12]</FONT><SPAN class=es0><STRONG><FONT color=#000099>\d</FONT></STRONG></SPAN><FONT color=#ff0000>{8}$"</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>?</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"COMFIRM"</FONT></SPAN> <SPAN class=sy0><FONT color=#339933>:</FONT></SPAN> <SPAN class=st0><FONT color=#ff0000>"INVAILD"</FONT></SPAN><SPAN class=sy0><FONT color=#339933>;</FONT></SPAN>
</PRE></DIV></DIV>
<h2>如何寫出高效率的正則表達式</h2>
<P>如果純粹是為了挑戰(zhàn)自己的正則水平,用來實現(xiàn)一些特效(例如使用正則表達式計算質(zhì)數(shù)、解線性方程),效率不是問題;如果所寫的正則表達式只是為了滿足一兩次、幾十次的運行,優(yōu)化與否區(qū)別也不太大。但是,如果所寫的正則表達式會百萬次、千萬次地運行,效率就是很大的問題了。我這里總結(jié)了幾條提升正則表達式運行效率的經(jīng)驗(工作中學(xué)到的,看書學(xué)來的,自己的體會),貼在這里。如果您有其它的經(jīng)驗而這里沒有提及,歡迎賜教。</P>
<P>為行文方便,先定義兩個概念。</P>
<p><B>誤匹配</B>:指正則表達式所匹配的內(nèi)容范圍超出了所需要范圍,有些文本明明不符合要求,但是被所寫的正則式“擊中了”。例如,如果使用<FONT color=#3366ff>\d{11}</FONT>來匹配11位的手機號,<FONT color=#3366ff>\d{11}</FONT>不單能匹配正確的手機號,它還會匹配<FONT color=#cc33cc>98765432100</FONT>這樣的明顯不是手機號的字符串。我們把這樣的匹配稱之為誤匹配。
<p><B>漏匹配</B>:指正則表達式所匹配的內(nèi)容所規(guī)定的范圍太狹窄,有些文本確實是所需要的,但是所寫的正則沒有將這種情況囊括在內(nèi)。例如,使用<FONT color=#3366ff>\d{18}</FONT>來匹配18位的身份證號碼,就會漏掉結(jié)尾是字母X的情況。 </LI></UL>
<P>寫出一條正則表達式,既可能<B>只出現(xiàn)</B>誤匹配(條件寫得極寬松,其范圍大于目標(biāo)文本),也可能<B>只出現(xiàn)</B>漏匹配(只描述了目標(biāo)文本中多種情況種的一種),還可能<B>既有誤匹配又有漏匹配</B>。例如,使用<FONT color=#3366ff>\w+\.com</FONT>來匹配.com結(jié)尾的域名,既會誤匹配<FONT color=#cc33cc>abc_.com</FONT>這樣的字串(合法的域名中不含下劃線,<FONT color=#3366ff>\w</FONT>包含了下劃線這種情況),又會漏掉<FONT color=#cc33cc>ab-c.com</FONT>這樣的域名(合法域名中可以含中劃線,但是<FONT color=#3366ff>\w</FONT>不匹配中劃線)。</P>
<P>精準的正則表達式意味著既無誤匹配且無漏匹配。當(dāng)然,現(xiàn)實中存在這樣的情況:只能看到有限數(shù)量的文本,根據(jù)這些文本寫規(guī)則,但是這些規(guī)則將會用到海量的文本中。這種情況下,盡可能地(如果不是完全地)消除誤匹配以及漏匹配,并提升運行效率,就是我們的目標(biāo)。本文所提出的經(jīng)驗,主要是針對這種情況。</P>
<p><B>掌握語法細節(jié)</B>。正則表達式在各種語言中,其語法大致相同,細節(jié)各有千秋。明確所使用語言的正則的語法的細節(jié),是寫出正確、高效正則表達式的基礎(chǔ)。例如,perl中與<FONT color=#3366ff>\w</FONT>等效的匹配范圍是<FONT color=#3366ff>[a-zA-Z0-9_]</FONT>;perl正則式不支持肯定逆序環(huán)視中使用可變的重復(fù)(variable repetition inside lookbehind,例如<FONT color=#3366ff>(?<=.*)abc</FONT>),但是.Net語法是支持這一特性的;又如,JavaScript連逆序環(huán)視(Lookbehind,如<FONT color=#3366ff>(?<=ab)c</FONT>)都不支持,而perl和python是支持的。《精通正則表達式》第3章《正則表達式的特性和流派概覽》明確地列出了各大派系正則的異同,這篇文章也簡要地列出了幾種常用語言、工具中正則的比較。對于具體使用者而言,至少應(yīng)該詳細了解正在使用的那種工作語言里正則的語法細節(jié)。
<p><B>先粗后精,</B><B>先加后減</B>。使用正則表達式語法對于目標(biāo)文本進行描述和界定,可以像畫素描一樣,先大致勾勒出框架,再逐步在局步實現(xiàn)細節(jié)。仍舉剛才的手機號的例子,先界定<FONT color=#3366ff>\d{11}</FONT>,總不會錯;再細化為<FONT color=#3366ff>1[358]\d{9}</FONT>,就向前邁了一大步(至于第二位是不是3、5、8,這里無意深究,只舉這樣一個例子,說明逐步細化的過程)。這樣做的目的是先消除漏匹配(剛開始先盡可能多地匹配,做加法),然后再一點一點地消除誤匹配(做減法)。這樣有先有后,在考慮時才不易出錯,從而向“不誤不漏”這個目標(biāo)邁進。
<p><B>留有余地</B>。所能看到的文本sample是有限的,而待匹配檢驗的文本是海量的,暫時不可見的。對于這樣的情況,在寫正則表達式時要跳出所能見到的文本的圈子,開拓思路,作出“戰(zhàn)略性前瞻”。例如,經(jīng)常收到這樣的垃圾短信:“發(fā)*票”、“發(fā)#漂”。如果要寫規(guī)則屏蔽這樣煩人的垃圾短信,不但要能寫出可以匹配當(dāng)前文本的正則表達式 <FONT color=#3366ff>發(fā)[*#](?:票|漂)</FONT>,還要能夠想到 <FONT color=#3366ff>發(fā).(?:票|漂|飄)</FONT>之類可能出現(xiàn)的“變種”。這在具體的領(lǐng)域或許會有針對性的規(guī)則,不多言。這樣做的目的是消除漏匹配,延長正則表達式的生命周期。
<p><B>明確</B>。具體說來,就是<B>謹慎</B>用點號這樣的元字符,<B>盡可能</B>不用星號和加號這樣的任意量詞。只要能確定范圍的,例如\w,就不要用點號;只要能夠預(yù)測重復(fù)次數(shù)的,就不要用任意量詞。例如,寫析取twitter消息的腳本,假設(shè)一條消息的xml正文部分結(jié)構(gòu)是<span class=”msg”>…</span>且正文中無尖括號,那么<FONT color=#3366ff><span class=”msg”>[^<]{1,480}</span></FONT>這種寫法<B>的思路</B>要好于<FONT color=#3366ff><span class=”msg”>.*</span></FONT>,原因有二:一是使用<FONT color=#3366ff>[^<]</FONT>,它保證了文本的范圍不會超出下一個小于號所在的位置;二是明確長度范圍,<FONT color=#3366ff>{1,480}</FONT>,其依據(jù)是一條twitter消息大致能的字符長度范圍。當(dāng)然,480這個長度是否正確還可推敲,但是這種思路是值得借鑒的。說得狠一點,“濫用點號、星號和加號是不環(huán)保、不負責(zé)任的做法”。
<p><B>不要讓稻草壓死駱駝</B>。每使用一個普通括號()而不是非捕獲型括號<FONT color=#3366ff>(?:…)</FONT>,就會保留一部分內(nèi)存等著你再次訪問。這樣的正則表達式、無限次地運行次數(shù),無異于一根根稻草的堆加,終于能將駱駝壓死。養(yǎng)成合理使用(?:…)括號的習(xí)慣。
<p><B>寧簡勿繁</B>。將一條復(fù)雜的正則表達式拆分為兩條或多條簡單的正則表達式,編程難度會降低,運行效率會提升。例如用來消除行首和行尾空白字符的正則表達式<FONT color=#3366ff>s/^\s+|\s+$//g;</FONT>,其運行效率理論上要低于<FONT color=#3366ff>s/^\s+//g; s/\s+$//g;</FONT> 。這個例子出自《精通正則表達式》第五章,書中對它的評論是“它幾乎總是最快的,而且顯然最容易理解”。既快又容易理解,何樂而不為?工作中我們還有其它的理由要將C==<FONT color=#3366ff>(A|B)</FONT>這樣的正則表達式拆為A和B兩條表達式分別執(zhí)行。例如,雖然A和B這兩種情況只要有一種能夠擊中所需要的文本模式就會成功匹配,但是如果只要有一條子表達式(例如A)會產(chǎn)生誤匹配,那么不論其它的子表達式(例如B)效率如何之高,范圍如何精準,C的總體精準度也會因A而受到影響。
<p><B>巧妙定位</B>。有時候,我們需要匹配的the,是作為單詞的the(兩邊有空格),而不是作為單詞一部分的t-h-e的有序排列(例如toge<FONT color=#cc33cc>the</FONT>r中的the)。在適當(dāng)?shù)臅r候用上<FONT color=#3366ff>^</FONT>,<FONT color=#3366ff>$</FONT>,<FONT color=#3366ff>\b</FONT>等等定位錨點,能有效提升找到成功匹配、淘汰不成功匹配的效率。 </LI></OL></p>
<p style="TEXT-INDENT: 2em"><strong>正則表達式:</strong> <A >http://114.xixik.com/regex/</A></p>
<p style="TEXT-INDENT: 2em"><strong>HTML轉(zhuǎn)義字符:</strong> <A >http://114.xixik.com/character/</A></p>
</div>
</div>
</div>
<script src="http://w.#/c.php?id=30039331" language="JavaScript" charset="gb2312"></script>
</body>
</html>
*/
/*
回顧:
css:
層疊樣式表
作用:
渲染頁面
提供工作效率,將html和樣式分離
和html的整合
方式1:內(nèi)聯(lián)樣式表
通過標(biāo)簽的style屬性? <xxx style="..."/>
方式2:內(nèi)部樣式表
通過head的子標(biāo)簽Style子標(biāo)簽
<style type="text/css">
選擇器{
屬性:值;
屬性1:值1;
}
</style>
方式3:外部樣式表
有一個獨立css文件.后綴名:.css
在html中通過link標(biāo)簽導(dǎo)入
選擇器:
id選擇器
html元素有id屬性且有值? <xx id="d1">
css中通過 # 導(dǎo)入? #d1{...}
類選擇器
html元素有class屬性且有值 <xx class="c1">
css中通過 . 導(dǎo)入 .c1{...}
元素選擇器
css中通過標(biāo)簽名即可? xx{...}
屬性選擇器
html元素有一個屬性且有值 <xx att="val1">
css中通過元素名[屬性="值"]使用? xx[att="val1"]{...}
后代選擇器
選擇器 后代選擇器
錨偽類(了解)
//////////////////
字體 文本 背景 列表 分類(clear display:none block inline)
框模型:
一個元素外邊有內(nèi)邊距 邊框 外邊距
順序:上右下左
//////////////////////////////////////
js
javascript 腳本語言 解釋性 基于對象 事件驅(qū)動函數(shù)
js的組成:
ECMAScript(語法)
BOM(瀏覽器對象模型)
DOM(文檔對象模型)
html和js的整合
方式1:內(nèi)部編寫js
<script type="text/javascript">js代碼</script>
方式2:
外部有一個獨立的js文件? 后綴名:.js
在html中通過script的src屬性導(dǎo)入
<script src="js的路徑"></script>
注意:
一旦使用了src屬性,那么script標(biāo)簽體中的js代碼將不再執(zhí)行了.
變量:
var 變量名=初始化值;
數(shù)據(jù)類型:
原始類型(5種)
Undefined
Null
String 用引號引起來的內(nèi)容
Number
Boolean
通過typeof可以判斷一個值或者變量是否是原始類型,若是原始類型,還可以判斷屬于那種.
typeof 變量|值
引用類型
運算符:
關(guān)系運算符:
兩邊值都是字符串,比較ascii碼
兩邊都是數(shù)字,和java一樣
一邊是數(shù)字,一遍是字符串形式的數(shù)字, 可以比較
一邊是數(shù)字,一遍是普通字符串 可以比較 值永遠是false
等性運算符
"66"==66? true
"666"===666 false
js的語句
if while for 和java一樣
//////////////////
獲取元素:
var obj=document.getElementById("id值");
獲取元素的value屬性
var val=document.getElementById("id值").value;
設(shè)置元素的value屬性
document.getElementById("id值").value="sdfsdf";
獲取元素的標(biāo)簽體
var ht=document.getElementById("id值").innerHTML;
設(shè)置元素的標(biāo)簽體
document.getElementById("id值").innerHTML="ssss";
定義函數(shù):
方式1:function 函數(shù)名(參數(shù)列表){函數(shù)體}
方式2:
var 函數(shù)名=function(參數(shù)列表){函數(shù)體}
注意:
函數(shù)聲明的時候不用聲明返回值類型
參數(shù)列表上不要寫參數(shù)類型
通過return結(jié)束方法和將值返回
事件:
onclick 單擊
onsubmit 表單提交
onload? 頁面加載成功或者元素加載成功
事件和函數(shù)綁定
方式1:通過元素的事件屬性
<xxx onxxx="函數(shù)名(參數(shù)列表)">
方式2:派發(fā)事件
document.getElementById("id值").onxxx=function(){...};
document.getElementById("id值").onxxx=函數(shù)名;
/////////////////////////////////
案例1-定時彈出廣告
需求:
打開頁面后4秒,展示廣告,2秒之后,該廣告隱藏.再停2秒,繼續(xù)展示.
技術(shù)分析:
定時器
定時器(BOM-window對象)
setInterval(code,毫秒數(shù)):周期執(zhí)行
setTimeout(code,毫秒數(shù)):延遲多長事件后 只執(zhí)行一次.
清除定時器
clearInterval(id):
clearTimeout(id):
步驟分析:
1.確定事件
2.編寫函數(shù)
a.獲取元素
b.操作元素
////////////////////////
1.html頁面,先把廣告隱藏
2.頁面加載成功事件 onload
3.編寫函數(shù)
定時器:
操作元素:
document.getElementById("")
操作css屬性
document.getElementById("id").style.屬性="值"
屬性:就是css中屬性 css屬性有"-" 例如:backgroud-color
若有"-" 只需要將"-"刪除,后面第一個字母變大寫即可
注意:
只要是window對象的屬性和方法,可以把window省略
window.onload 等價于 onload
window.setInterval() 等價于 setInterval()
////////////////////
bom(瀏覽器對象模型)總結(jié)
所有的瀏覽器都有5個對象
window:窗口
location:定位信息 (地址欄)
history:歷史
window對象詳解:
如果文檔包含框架(frame 或 iframe 標(biāo)簽),瀏覽器會為 HTML 文檔創(chuàng)建一個 window 對象,
并為每個框架創(chuàng)建一個額外的 window 對象。
常用的屬性:
通過window可以獲取其他的四個對象
window.location 等價域 location
window.history 等價于 history
...
常用的方法
消息框
alert("...."):警告框
confirm("你確定要刪除嗎?"):確定框 返回值:boolean
prompt("請輸入您的姓名"):輸入框 返回值:你輸入的內(nèi)容
定時器
設(shè)置定時器
setInterval(code,毫秒數(shù)):周期執(zhí)行
setTimeout(code,毫秒數(shù)):延遲多長事件后 只執(zhí)行一次.
例如:
setInterval(showAd,4000);
serInterval("showAd()",4000);
清除定時器
clearInterval(id):
clearTimeout(id):
打開和關(guān)閉
open(url):打開
close():關(guān)閉
/////////////////////////
location:定位信息
常用屬性:
href:獲取或者設(shè)置當(dāng)前頁面的url(定位信息)
location.href; 獲取url
location.href="...";設(shè)置url 相當(dāng)于 a標(biāo)簽
//////////////////////
history:歷史
back();后退
forward():向前
★go(int)
go(-1) 相當(dāng)于 back()
go(1) 相當(dāng)于 forward()
//////////////////////////////////////
案例2-表單校驗plus
需求:
提示信息不用彈出框,將信息追加在文本框后面
技術(shù)分析:
確定事件 表單提交的時候 onsubmit
文本框失去焦點的時候 onblur
編寫函數(shù)
獲取元素
document.getElementById("id值");
操作元素(獲取元素的值,操作標(biāo)簽體,操作標(biāo)簽value屬性)
/////////////////
步驟分析:
1.表單
2.表單提交的時候 確定事件 onsubmit()
3.校驗用戶名和密碼
4.獲取用戶名和密碼的對象及值
5.判斷內(nèi)容,當(dāng)為空的時候,獲取響應(yīng)的span元素
往span元素中顯示錯誤信息
////////////////////////
注意:
在方法中(function()) this指代的是當(dāng)前的元素(當(dāng)前dom對象)
例如:
<input type="text" name="username" id="username" onblur="loseFocus(this.value)">
方法:
function loseFocus(obj){
alert(obj);
}
/////////////////////////////
事件總結(jié):
常見的事件:
焦點事件:★
onfocus
onblur
表單事件:★
onsubmit
onchange 改變
頁面加載事件:★
onload
鼠標(biāo)事件(掌握)
onclick
鼠標(biāo)事件(了解)
ondblclick:雙擊
onmousedown:按下
onmouserup:彈起
onmousemove:移動
onmouserover:懸停
onmouserout:移出
鍵盤事件(理解)
onkeydown:按下
onkeyup:彈起
onkeypress:按住
////////////
綁定事件:
方式1:
元素的事件屬性
方式2:
派發(fā)事件
///////////////////
了解
阻止默認事件的發(fā)生
阻止事件傳播
/////////////////
案例3-隔行換色
需求:
一個表格,隔一行換一個色
技術(shù)分析:
事件:onload
獲取元素:dom操作
///////////////
獲取元素:
document.getElementById("id"):通過id獲取一個元素
document.getElementsByTagName("標(biāo)簽名"):通過標(biāo)簽名獲取一種元素(多個)返回一個數(shù)組
Array:
常用屬性:
length:數(shù)組的長度
////////////////////////
步驟分析:
1.html表格一加載的時候 確定事件 onload
2.編寫函數(shù)
a.獲取元素(所有的tr元素)
b.操作(若當(dāng)前行是偶數(shù)的話加一個樣式,若是奇數(shù)的話,加另一個樣式)
////////
//頁面加載成功
onload=function(){
//1.獲取所有的tr
var arr=document.getElementsByTagName("tr");
//alert(arr);
//alert(arr.length);
//2.判斷奇偶數(shù) 添加不同的樣式 遍歷數(shù)組
for(var i=1;i<arr.length;i++){
if(i%2==0){
arr[i].style.backgroundColor="#FFFFCC";
}else{
arr[i].style.backgroundColor="#BCD68D";
}
}
}
//////////////////////////
案例4:全選或者全不選
步驟分析:
1.確定事件 最上面那個復(fù)選框的單擊事件 onclick
2.編寫函數(shù):讓所有的復(fù)選框和最上面的復(fù)選框狀態(tài)保持一致
a.獲取最上面這個復(fù)選框選中狀態(tài) 通過checkbox的checked屬性即可
b.獲取其他的復(fù)選框,設(shè)置他們的checked屬性即可
可以通過以下兩種方案獲取元素
document.getElementsByClassName():需要給下面所有的復(fù)選框添加class屬性
document.getElementsByName():需要給下面所有的復(fù)選框添加name屬性
//////////////////////////////////
dom(文檔對象模型)
當(dāng)瀏覽器接受到html代碼的時候,瀏覽器會將所有的代碼裝載到內(nèi)存中,形成一棵樹(document樹)
節(jié)點(Node)
文檔節(jié)點 document
元素節(jié)點 element
屬性節(jié)點 attribute
文本節(jié)點 text
獲取節(jié)點:
通過document可以獲取其他節(jié)點:
常用方法:
document.getElementById("id值"):獲取一個特定的元素
document.getElementsByTagName("標(biāo)簽名"):通過標(biāo)簽名獲取一種元素(多個)
document.getElementsByClassName("class屬性的值"):通過class屬性獲取一類元素(多個)
document.getElementsByName("name屬性的值"):通過name屬性獲取一類元素(多個)
設(shè)置獲取獲取節(jié)點的value屬性
dom對象.value;獲取
dom對象.value="";設(shè)置
設(shè)置或者獲取節(jié)點的標(biāo)簽體
dom對象.innerHTML;獲取
dom對象.innerHTML="";設(shè)置
獲取或者設(shè)置style屬性
dom對象.style.屬性;獲取
dom對象.style.屬性="";設(shè)置
獲取或者設(shè)置屬性
dom對象.屬性
/////////////////////////
對于htmldom的操作若在js或者htmldom 查找不到 去查找xml dom
關(guān)于文檔的操作 在 xml dom 的document中
關(guān)于元素的操作 在 xml dom 的element中
appendChild(dom對象):在一個元素下添加孩子
//////////////////////////////////////
案例5-左右選中.
需求:
技術(shù)分析:
1.確定事件,按鈕的單擊事件
2.編寫函數(shù):
點擊移動單|多個的:
a.獲取左邊選中的選項? select對象.options--數(shù)組
遍歷數(shù)組 判斷是否選中 option對象.selected
b.將其追加到右邊的下拉選中
rightSelect對象.appendChild(option);
點擊移動所有的
a.獲取左邊的所有的選項
b.一個個的追加過去
///////////////////////
案例6-省市聯(lián)動
需求:
選中省的時候,動態(tài)的查詢當(dāng)前省下的所有市,然后展示在市的下拉選中
技術(shù)分析:
數(shù)組:
////////////////////////
數(shù)組:
語法:
new Array();//長度為0
new Array(size);//指定長度的
new Array(e1,e2..);//指定元素
非官方
var arr4=["aa","bb"];
常用屬性:
length
注意:
數(shù)組是可變的
數(shù)組可以存放任意值
常用方法:(了解)
存放值:對內(nèi)容的操作
pop():彈 最后一個
push():插入 到最后
shift():刪除第一個
unshift():插入到首位
打印數(shù)組:
join(分隔符):將數(shù)組里的元素按照指定的分隔符打印
拼接數(shù)組:
concat():連接兩個或更多的數(shù)組,并返回結(jié)果。
對結(jié)構(gòu)的操作:
sort();排序
reverse();反轉(zhuǎn)
////////////////////////
步驟分析:
1.省的下拉選 的選項中添加value屬性 當(dāng)成數(shù)組的索引
2.初始化市
3.選擇省的時候,onchange事件
4.編寫函數(shù),
通過獲取的索引獲取對象的市的數(shù)組 this.value
遍歷數(shù)組,將數(shù)組里面的每個值組裝option 添加到select中即可
//////////////////////////////
引用類型總結(jié):
原始類型中的String Number Boolean都是偽對象,可以調(diào)用相應(yīng)的方法
Array:數(shù)組
String:
語法:
new String(值|變量);//返回一個對象
String(值|變量);//返回原始類型
常用方法:
substring(start,end):[start,end)
substr(start,size):從索引為指定的值開始向后截取幾個
charAt(index):返回在指定位置的字符。
indexOf(""):返回字符串所在索引
replace():替換
split():切割
常用屬性:length
Boolean:
語法:
new Boolean(值|變量);
Boolean(值|變量);
非0數(shù)字 非空字符串 非空對象 轉(zhuǎn)成true
Number
語法:
new Number(值|變量);
Number(值|變量);
注意:
null====>0
fale====>0 true====>1
字符串的數(shù)字=====>對應(yīng)的數(shù)字
其他的NaN
Date:
new Date();
常用方法:
toLocalString()
RegExp:正則表達式
語法:
直接量語法? /正則表達式/參數(shù)
直接量語法? /正則表達式/
new RegExp("正則表達式")
new RegExp("正則表達式","參數(shù)")
參數(shù):
i:忽略大小寫
g:全局
常用方法:
test() :返回值為boolean
Math:
Math.常量|方法
Math.PI
Math.random()? [0,1)
全局:
★
decodeURI() 解碼某個編碼的 URI。
encodeURI() 把字符串編碼為 URI。
Number():強制轉(zhuǎn)換成數(shù)字
String():轉(zhuǎn)成字符串
parseInt():嘗試轉(zhuǎn)換成整數(shù)
parseFloat():嘗試轉(zhuǎn)換成小數(shù)
eval() 計算 JavaScript 字符串,并把它作為腳本代碼來執(zhí)行。
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
上午回顧:
BOM(瀏覽器對象模型)
window對象:窗口
注意:
若是window對象的屬性和方法,調(diào)用的時候可以省略window
常用屬性:
通過window可以獲取其他的四個對象
window.location 等價于 location
常用方法:
消息框
alert() 警告框
confirm() 確認框 返回值:boolean
prompt() 輸入框 返回值:輸入的內(nèi)容
定時器
設(shè)置
setInterval(code,毫秒數(shù)):循環(huán)
setTimeout(code,毫秒數(shù)):延遲 只執(zhí)行一次
清除
clearInterval(id):
clearTimeout(id):
打開和關(guān)閉
open(url)
close()
location對象:定位信息 地址欄
常用屬性:
href:獲取或者設(shè)置當(dāng)前頁面的url
location.href:獲取
location.href="url":設(shè)置 相當(dāng)于超鏈接
history對象:操作歷史
常用方法:
go()
////////////////////////////
事件:
焦點:★
onfocus:獲取焦點
onblur:失去焦點
表單事件:★
onsubmit: form表單里的
onchange:改變(下拉選)
頁面或者對象加載:★
onload:
鼠標(biāo):★
onclick:單擊
鍵盤:
onkeyup:
dom(★)
獲取元素的方法(4個) document
操作元素的屬性? dom對象.屬性;
引用類型:
array
string
substring
全局:
編碼2個
強制轉(zhuǎn)化 Number String
嘗試? parseXxx
eval() 解析字符串形式的js代碼
Math random()