JavaScript通過RegExp類來支持正則表達式,舉一個最簡單的例子:

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供永修網(wǎng)站建設(shè)、永修做網(wǎng)站、永修網(wǎng)站設(shè)計、永修網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、永修企業(yè)網(wǎng)站模板建站服務(wù),10年永修做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
復(fù)制代碼
代碼如下:
var
regApple
=
new
RegExp("apple");
它可以匹配一個字符串中出現(xiàn)的第一個"apple"字符串,并且對大小寫敏感。在構(gòu)造方法中加入第二個參數(shù)"g"則代表的搜索出字符串中所有的
"apple",這里"g"代表"global"。如果第二個參數(shù)為"i",則代表著case-insensitive,匹配過程中將不考慮字母的大小寫。將上述兩者綜合起來,可以搜索出所有"apple"字符串,并且不考慮大小寫問題。
復(fù)制代碼
代碼如下:
var
regApple
=
new
RegExp("apple",
"gi");
正則表達式有著并不唯一的表示方法,使用Perl語言中的語法,可以將上述表達式表示為:
復(fù)制代碼
代碼如下:
var
regApple
=
/apple/gi;
創(chuàng)建了一個RegExp對象后,RegExp的方法可以構(gòu)造出不同的匹配方式,因為正則表達式是對字符串進行的操作,所以String的一些方法在構(gòu)造正則表達式的過程中也扮演著重要角色。
RegExp對象的方法
復(fù)制代碼
代碼如下:
var
sampleString
=
"Greenapple";
var
regApple
=
/apple/;
alert(regApple.test(sampleString));
上面代碼輸出的結(jié)果是"true",因為sampleString中包含了需要匹配的字符串"apple",這是最簡單的檢測方式。有時,我們需要知道匹配的詳細結(jié)果,例如:
復(fù)制代碼
代碼如下:
var
sampleString
=
"green
apples,
red
apples";
var
regApple
=
/apple/g;
var
arr
=
regApple.exec(sampleString);
通過使用exec()方法,返回的arr是關(guān)于匹配結(jié)果的一個數(shù)組,包括每一個匹配的值及其所在的段,例如上例中是"green
apples"還是"red
apples"。match()方法有著和exec()相同的功能,只是表達方式不同:
復(fù)制代碼
代碼如下:
var
sampleString
=
"green
apples,
red
apples";
var
regApple
=
/apple/g;
var
arr
=
sampleString.match(regApple);
search()方法和indexOf()比較類似,返回第一個匹配的字符串所在的位置:
復(fù)制代碼
代碼如下:
var
sampleString
=
"green
apples,
red
apples";
var
regApple
=
/apple/gi;
alert(sampleString.search(regApple));
//輸出"6"
String的方法
String的replace()方法可以將指定的字符串替換為另一個字符串:
復(fù)制代碼
代碼如下:
var
sampleString
=
"There
is
a
green
apple.";
alert(sampleString.replace("green",
"red"));
//輸出"There
is
a
red
apple."
將replace()的第一個參數(shù)替換為一個正則表達式,可以達到同樣的效果:
復(fù)制代碼
代碼如下:
var
sampleString
=
"There
is
a
green
apple.";
var
regApple
=
/apple/;
alert(sampleString.replace(regApple,
"red"));
//輸出"There
is
a
red
apple."
replace()的第二個參數(shù)可以替換為一個function(),該function()接受一個匹配字符串作為參數(shù),返回一個替換字符串。(存在疑問)
使用正則表達式可以實現(xiàn)String的split()方法相同的功能。
復(fù)制代碼
代碼如下:
var
fruit
=
"apple,pear,lemon";
var
arr
=
fruit.split(",");
使用正則表達式:
復(fù)制代碼
代碼如下:
var
fruit
=
"apple,pear,lemon";
var
reg
=
/\,/;
var
arr
=
fruit.split(reg);
javascript函數(shù)表達式有存在的必要的。
在javascript中,函數(shù)有兩種定義寫法,函數(shù)定義表達式和函數(shù)聲明,其例子分別如下所示:
var test = function(x){
return x;
}
function test(x){
return x;
}
盡管函數(shù)定義表達式和函數(shù)聲明語句包含相同的函數(shù)名,并且都創(chuàng)建了新的函數(shù)對象,但是這二者卻有區(qū)別。
函數(shù)聲明語句中的函數(shù)名是一個變量名,變量指向函數(shù)對象。
函數(shù)定義表達式和通過var聲明變量一樣,其函數(shù)被提前到了腳本或函數(shù)的頂部,因此它在整個腳本和或函數(shù)內(nèi)都是可見的。這樣的話,只有函數(shù)變量聲明提前了,函數(shù)的初始化代碼仍然在原來的位置。但是使用函數(shù)聲明的話,函數(shù)名稱和函數(shù)體均提前了,即腳本中的函數(shù)和函數(shù)中嵌套的函數(shù)都會在當(dāng)前上下文中其它代碼之前聲明,也即可以在聲明一個函數(shù)之前調(diào)用它。
舉個例子:
test(1);
function test(x){
console.log(x);
}
上述代碼能正常執(zhí)行,結(jié)果輸出為1;因為對于函數(shù)聲明語句,函數(shù)名稱和函數(shù)體均提前聲明了,可以在聲明之前調(diào)用它。
test(1);
var test = function(x){
console.log(x);
}
上述代碼不能正常執(zhí)行,會報錯。
因為對于函數(shù)定義表達式,只有函數(shù)變量聲明提前了,但是函數(shù)的初始化代碼仍然在原來的位置,也即相當(dāng)于如下的代碼
var test; //函數(shù)變量聲明提前
test(1);
var test = function(x){
console.log(x);
}
因此,會報錯test不是一個函數(shù)的錯誤。
1.什么 是正則表達式
正則表達式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。
正則表達式并不是屬于某種語言的,它是一門獨立的語言,幾乎在所有的編程語言中都提供了相關(guān)支持(Javascript、PHP、Java、C++)
以SQL語言為例:搜索功能
精準(zhǔn)匹配:
\$sql = “select * from goods where title=’Nokia N95’”; //返回某個固定的結(jié)果
模糊匹配:
\$sql = “select * from goods where title like ‘%Nokia N95%’”; //返回某種滿足條件的結(jié)果
所以由此可知,正則表達式也是一種模糊匹配。
2.正則 表達式應(yīng)用場景
① 數(shù)據(jù)隱藏 李先生 一等獎 139****635
② 數(shù)據(jù)驗證 手機驗證、郵箱驗證、IP地址驗證
③ 數(shù)據(jù)采集 網(wǎng)站后臺都可以集成一個按鈕(數(shù)據(jù)采集)
④ 數(shù)據(jù)檢索
3.快速入門
1)查找一個字符串中是否具有數(shù)字“8”
運行結(jié)果:
2)查找一個字符串中是否具有數(shù)字
運行結(jié)果:
3)查找一個字符串中是否具有非數(shù)字
運行結(jié)果:
這是Javascript語言正則表達式中的反向引用,就是\1引用前面小括號中捕獲組的數(shù)據(jù)(,),因為只有一個小括號(一個捕獲組),所以第一個正則表達式\1是對的
第二個正則表達式/apple(,5)orange\2/ 因為只有一個捕獲組,而引用的\2是指引用第二捕獲組,沒有第二捕獲組,所以是錯誤的
如果第二個第二個正則表達式是這樣/apple(,)(5)orange\2/那么等同于/apple,5orange5/,那樣是可以的
\n實際上就是反向引用其前面捕獲組中的數(shù)據(jù),有幾個捕獲組,就可以引用幾個
分享標(biāo)題:javascript表達式的簡單介紹
當(dāng)前鏈接:http://chinadenli.net/article12/dsgpjdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、靜態(tài)網(wǎng)站、網(wǎng)站收錄、定制網(wǎng)站、品牌網(wǎng)站設(shè)計、App設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)