JavaScript 知識點 --》 正則表示式
JavaScript 字串
字串可以是插入到引號中的任何字元。你可以使用單引號或雙引號:
var carname = "Volvo XC60"; var carname = 'Volvo XC60';
字串的索引從 0 開始,這意味著第一個字元索引值為 [0],第二個為 [1],
可以使用內建屬性 length 來計算字串的長度:var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var sln = txt.length;
使用反斜槓 (\) 來轉義 "Vikings" 字串中的雙引號,如下:
"We are the so-called \"Vikings\" from the north."
程式碼 | 輸出 |
---|---|
\' | 單引號 |
\" | 雙引號 |
\\ | 反斜槓 |
\n | 換行 |
\r | 回車 |
\t | tab(製表符) |
\b | 退格符 |
\f | 換頁符 |
可以使用 new 關鍵字將字串定義為一個物件: var firstName = new String("John")
=== 為絕對相等,即資料型別與值都必須相等
屬性 | 描述 |
---|---|
constructor | 返回建立字串屬性的函式 |
length | 返回字串的長度 |
prototype | 允許您向物件新增屬性和方法 |
方法 | 描述 |
---|---|
charAt() | 返回指定索引位置的字元 |
charCodeAt() | 返回指定索引位置字元的 Unicode 值 |
concat() | 連線兩個或多個字串,返回連線後的字串 |
fromCharCode() | 將 Unicode 轉換為字串 |
indexOf() | 返回字串中檢索指定字元第一次出現的位置 |
lastIndexOf() | 返回字串中檢索指定字元最後一次出現的位置 |
localeCompare() | 用本地特定的順序來比較兩個字串 |
match() | 找到一個或多個正則表示式的匹配 |
replace() | 替換與正則表示式匹配的子串 |
search() | 檢索與正則表示式相匹配的值 |
slice() | 提取字串的片斷,並在新的字串中返回被提取的部分 |
split() | 把字串分割為子字串陣列 |
substr() | 從起始索引號提取字串中指定數目的字元 |
substring() | 提取字串中兩個指定的索引號之間的字元 |
toLocaleLowerCase() | 根據主機的語言環境把字串轉換為小寫,只有幾種語言(如土耳其語)具有地方特有的大小寫對映 |
toLocaleUpperCase() | 根據主機的語言環境把字串轉換為大寫,只有幾種語言(如土耳其語)具有地方特有的大小寫對映 |
toLowerCase() | 把字串轉換為小寫 |
toString() | 返回字串物件值 |
toUpperCase() | 把字串轉換為大寫 |
trim() | 移除字串首尾空白 |
valueOf() |
返回某個字串物件的原始值 |
JavaScript 運算子
算數運算子
+ | 加法 | x=y+2 | 7 | 5 | 例項 » |
- | 減法 | x=y-2 | 3 | 5 | 例項 » |
* | 乘法 | x=y*2 | 10 | 5 | 例項 » |
/ | 除法 | x=y/2 | 2.5 | 5 | 例項 » |
% | 取模(餘數) | x=y%2 | 1 | 5 | 例項 » |
++ | 自增 | x=++y | 6 | 6 | 例項 » |
x=y++ | 5 | 6 | 例項 » | ||
-- | 自減 | x=--y | 4 | 4 | 例項 » |
x=y-- | 5 | 4 | 例項 » |
賦值運算子
給定 x=10 和 y=5,下面的表格解釋了賦值運算子:
運算子 | 例子 | 等同於 | 運算結果 | 線上例項 |
---|---|---|---|---|
= | x=y | x=5 | 例項 » | |
+= | x+=y | x=x+y | x=15 | 例項 » |
-= | x-=y | x=x-y | x=5 | 例項 » |
*= | x*=y | x=x*y | x=50 | 例項 » |
/= | x/=y | x=x/y | x=2 | 例項 » |
%= | x%=y | x=x%y | x=0 | 例項 » |
+ 運算子用於把文字值或字串變數加起來(連線起來)。
txt1="What a very "; txt2="nice day"; txt3=txt1+txt2;
在以上語句執行後,變數 txt3包含的值是:
What a very nice day
兩個數字相加,返回數字相加的和,如果數字與字串相加,返回字串,如下例項:
x=5+5; y="5"+5; z="Hello"+5;
x,y, 和 z 輸出結果為:
10 55 Hello5
比較運算子
!= | 不等於 | x!=8 | true | 例項 » |
!== | 不絕對等於(值和型別有一個不相等,或兩個都不相等) | x!=="5" | true | 例項 » |
x!==5 | false | 例項 » |
邏輯運算子
給定 x=6 以及 y=3,下表解釋了邏輯運算子:
運算子 | 描述 | 例子 |
---|---|---|
&& | and | (x < 10 && y > 1) 為 true |
|| | or | (x==5 || y==5) 為 false |
! | not | !(x==y) 為 true |
條件運算子
語法
variablename=(condition)?value1:value2
例項
如果變數 age 中的值小於 18,則向變數 voteable 賦值 "年齡太小",否則賦值 "年齡已達到"。
voteable=(age<18)?"年齡太小":"年齡已達到";
語句
- if 語句 - 只有當指定條件為 true 時,使用該語句來執行程式碼
- if...else 語句 - 當條件為 true 時執行程式碼,當條件為 false 時執行其他程式碼
- if...else if....else 語句- 使用該語句來選擇多個程式碼塊之一來執行
- switch 語句 - 使用該語句來選擇多個程式碼塊之一來執行
if....else if...else 語句來選擇多個程式碼塊之一來執行。
語法
if (condition1) { 當條件 1 為 true 時執行的程式碼 } else if (condition2) { 當條件 2 為 true 時執行的程式碼 } else { 當條件 1 和 條件 2 都不為 true 時執行的程式碼 }
switch 語句用於基於不同的條件來執行不同的動作。
語法
switch(n)
{
case 1:
執行程式碼塊 1
break;
case 2: 執行程式碼塊 2 break; default: 與 case 1 和 case 2 不同時執行的程式碼 }
首先設定表示式 n(通常是一個變數)。隨後表示式的值會與結構中的每個 case 的值做比較。如果存在匹配,則與該 case 關聯的程式碼塊會被執行。請使用 break 來阻止程式碼自動地向下一個 case 執行。
使用 default 關鍵詞來規定匹配不存在時做的事情:
var d=new Date().getDay(); switch (d) { case 6:x="今天是星期六"; break; case 0:x="今天是星期日"; break; default: x="期待週末"; } document.getElementById("demo").innerHTML=x;
JavaScript for 迴圈
- or - 迴圈程式碼塊一定的次數
- for/in - 迴圈遍歷物件的屬性
- while - 當指定的條件為 true 時迴圈指定的程式碼塊
- do/while - 同樣當指定的條件為 true 時迴圈指定的程式碼塊
for 迴圈的語法:
for (語句 1; 語句 2; 語句 3) { 被執行的程式碼塊 }
for (var i=0; i<5; i++) { x=x + "該數字為 " + i + "<br>"; }
語句 1 中初始化任意(或者多個)值:
for (var i=0,len=cars.length; i<len; i++) { document.write(cars[i] + "<br>"); }
JavaScript while 迴圈
語法
while (條件) { 需要執行的程式碼 }
while (i<5) { x=x + "The number is " + i + "<br>"; i++; }
語法
do { 需要執行的程式碼 } while (條件);
例項
do { x=x + "The number is " + i + "<br>"; i++; } while (i<5);
JavaScript Break 和 Continue 語句
break 語句可用於跳出迴圈。
continue 語句跳出迴圈後,會繼續執行該迴圈之後的程式碼(如果有的話):
for (i=0;i<10;i++) { if (i==3) { break; } x=x + "The number is " + i + "<br>"; }
continue 語句中斷迴圈中的迭代,如果出現了指定的條件,然後繼續迴圈中的下一個迭代。 該例子跳過了值 3:
例項
for (i=0;i<=10;i++) { if (i==3) continue; x=x + "The number is " + i + "<br>"; }
break 和 continue 語句僅僅是能夠跳出程式碼塊的語句。
continue 語句(帶有或不帶標籤引用)只能用在迴圈中。
break 語句(不帶標籤引用),只能用在迴圈或 switch 中。
JavaScript typeof, null, 和 undefined
你可以使用 typeof 操作符來檢測變數的資料型別。
例項
typeof "John" // 返回 string typeof 3.14 // 返回 number typeof false // 返回 boolean typeof [1,2,3,4] // 返回 object typeof {name:'John', age:34} // 返回 object
null是一個只有一個值的特殊型別。表示一個空物件引用。
typeof 一個沒有值的變數會返回 undefined。
null 和 undefined 的值相等,但型別不等:
typeof undefined // undefined typeof null // object null === undefined // false null == undefined // true
JavaScript 型別轉換
JavaScript 資料型別
在 JavaScript 中有 5 種不同的資料型別:
- string
- number
- boolean
- object
- function
3 種物件型別:
- Object
- Date
- Array
2 個不包含任何值的資料型別:
- null
- undefined
constructor 屬性返回所有 JavaScript 變數的建構函式。
可以使用 constructor 屬性來檢視物件是否為陣列 (包含字串 "Array"):
function isArray(myArray) { return myArray.constructor.toString().indexOf("Array") > -1; }
全域性方法 String() 可以將數字轉換為字串。
例項
String(x) // 將變數 x 轉換為字串並返回 String(123) // 將數字 123 轉換為字串並返回 String(100 + 23) // 將數字表達式轉換為字串並返回
將布林值轉換為字串
全域性方法 String() 可以將布林值轉換為字串。
String(false) // 返回 "false" String(true) // 返回 "true"
Boolean 方法 toString() 也有相同的效果。
false.toString() // 返回 "false" true.toString() // 返回 "true"
在 Date 方法 章節中,你可以檢視更多關於日期轉換為字串的函式:
方法 | 描述 |
---|---|
getDate() | 從 Date 物件返回一個月中的某一天 (1 ~ 31)。 |
getDay() | 從 Date 物件返回一週中的某一天 (0 ~ 6)。 |
getFullYear() | 從 Date 物件以四位數字返回年份。 |
getHours() | 返回 Date 物件的小時 (0 ~ 23)。 |
getMilliseconds() | 返回 Date 物件的毫秒(0 ~ 999)。 |
getMinutes() | 返回 Date 物件的分鐘 (0 ~ 59)。 |
getMonth() | 從 Date 物件返回月份 (0 ~ 11)。 |
getSeconds() | 返回 Date 物件的秒數 (0 ~ 59)。 |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒數。 |
全域性方法 Number() 可以將字串轉換為數字。
Number("3.14") // 返回 3.14 Number(" ") // 返回 0 Number("") // 返回 0 Number("99 88") // 返回 NaN
一元運算子 +
Operator + 可用於將變數轉換為數字:
例項
var y = "5"; // y 是一個字串 var x = + y; // x 是一個數字
將布林值轉換為數字
全域性方法 Number() 可將布林值轉換為數字。
Number(false) // 返回 0 Number(true) // 返回 1
原始值 | 轉換為數字 | 轉換為字串 | 轉換為布林值 | 例項 |
---|---|---|---|---|
false | 0 | "false" | false | 嘗試一下 » |
true | 1 | "true" | true | 嘗試一下 » |
0 | 0 | "0" | false | 嘗試一下 » |
1 | 1 | "1" | true | 嘗試一下 » |
"0" | 0 | "0" | true | 嘗試一下 » |
"000" | 0 | "000" | true | 嘗試一下 » |
"1" | 1 | "1" | true | 嘗試一下 » |
NaN | NaN | "NaN" | false | 嘗試一下 » |
Infinity | Infinity | "Infinity" | true | 嘗試一下 » |
-Infinity | -Infinity | "-Infinity" | true | 嘗試一下 » |
"" | 0 | "" | false | 嘗試一下 » |
"20" | 20 | "20" | true | 嘗試一下 » |
"Runoob" | NaN | "Runoob" | true | 嘗試一下 » |
[ ] | 0 | "" | true | 嘗試一下 » |
[20] | 20 | "20" | true | 嘗試一下 » |
[10,20] | NaN | "10,20" | true | 嘗試一下 » |
["Runoob"] | NaN | "Runoob" | true | 嘗試一下 » |
["Runoob","Google"] | NaN | "Runoob,Google" | true | 嘗試一下 » |
function(){} | NaN | "function(){}" | true | 嘗試一下 » |
{ } | NaN | "[object Object]" | true | 嘗試一下 » |
null | 0 | "null" | false | 嘗試一下 » |
undefined | NaN | "undefined" | false | 嘗試一下 » |
JavaScript 正則表示式
語法
/正則表示式主體/修飾符(可選)
例項:
var patt = /runoob/i
例項解析:
/runoob/i 是一個正則表示式。
runoob 是一個正則表示式主體 (用於檢索)。
search() 方法使用正則表示式
例項
使用正則表示式搜尋 "Runoob" 字串,且不區分大小寫:
var str = "Visit Runoob!"; var n = str.search(/Runoob/i);
replace() 方法使用正則表示式
例項
使用正則表示式且不區分大小寫將字串中的 Microsoft 替換為 Runoob :
var str = document.getElementById("demo").innerHTML; var txt = str.replace(/microsoft/i,"Runoob");
結果輸出為:
Visit Runoob!
修飾符 | 描述 |
---|---|
i | 執行對大小寫不敏感的匹配。 |
g | 執行全域性匹配(查詢所有匹配而非在找到第一個匹配後停止)。 |
m | 執行多行匹配。 |
\d | 查詢數字。 |
\s | 查詢空白字元。 |
\b | 匹配單詞邊界。 |
\uxxxx | 查詢以十六進位制數 xxxx 規定的 Unicode 字元。 |
量詞 | 描述 |
---|---|
n+ | 匹配任何包含至少一個 n 的字串。 |
n* | 匹配任何包含零個或多個 n 的字串。 |
n? | 匹配任何包含零個或一個 n 的字串。 |
test() 方法用於檢測一個字串是否匹配某個模式,如果字串中含有匹配的文字,則返回 true,否則返回 false。
var patt = /e/; patt.test("The best things in life are free!");
字串中含有 "e",所以該例項輸出為:
true
exec() 方法用於檢索字串中的正則表示式的匹配。
/e/.exec("The best things in life are free!");
字串中含有 "e",所以該例項輸出為:
e