1. 程式人生 > >JavaScript 知識點 --》 正則表示式

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