亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

js正則函數match、exec、test、search、replace、split使用介紹集合

2020-03-16 21:11:14
字體:
來源:轉載
供稿:網友
js正則函數match、exec、test、search、replace、split使用介紹集合,學習正則表達式的朋友可以參考下。
 
 
match 方法 
使用正則表達式模式對字符串執行查找,并將包含查找的結果作為數組返回。 
stringObj.match(rgExp) 
參數 
stringObj 
必選項。對其進行查找的 String 對象或字符串文字。 
rgExp 
必選項。為包含正則表達式模式和可用標志的正則表達式對象。也可以是包含正則表達式模式和可用標志的變量名或字符串文字。 
其余說明與exec一樣,不同的是如果match的表達式匹配了全局標記g將出現所有匹配項,而不用循環,但所有匹配中不會包含子匹配項。 
例子1: 
function MatchDemo(){ var r, re; // 聲明變量。 var s = "The rain in Spain falls mainly in the plain"; re = /(a)in/ig; // 創建正則表達式模式。 r = s.match(re); // 嘗試去匹配搜索字符串。 document.write(r); // 返回的數組包含了所有 "ain" 出現的四個匹配,r[0]、r[1]、r[2]、r[3]。 // 但沒有子匹配項a。}輸出結果:ain,ain,ain,ain 
exec 方法 
用正則表達式模式在字符串中查找,并返回該查找結果的第一個值(數組),如果匹配失敗,返回null。 
rgExp.exec(str) 
參數 
rgExp 
必選項。包含正則表達式模式和可用標志的正則表達式對象。 
str 
必選項。要在其中執行查找的 String 對象或字符串文字。 
返回數組包含: 
input:整個被查找的字符串的值; 
index:匹配結果所在的位置(位); 
lastInput:下一次匹配結果的位置; 
arr:結果值,arr[0]全匹配結果,arr[1,2...]為表達式內()的子匹配,由左至右為1,2...。 
例子2: 
復制代碼代碼如下:

function RegExpTest(){ 
var src="http://sumsung753.blog.163.com/blog/I love you!"; 
var re = //w+/g; // 注意g將全文匹配,不加將永遠只返回第一個匹配。 
var arr; 
while((arr = re.exec(src)) !=null){ //exec使arr返回匹配的第一個,while循環一次將使re在g作用尋找下一個匹配。 
document.write(arr.index + "-" + arr.lastIndex + ":" + arr + "<br/>"); 
for(key in arr){ 
document.write(key + "=>" + arr[key] + "<br/>"); 

document.write("<br/>"); 


window.onload = RegExpTest(); 

輸出結果: 
0-1:I //0為index,i所在位置,1為下一個匹配所在位置 
input=>I love you! 
index=>0 
lastIndex=>1 
0=>I 
2-6:love 
input=>I love you! 
index=>2 
lastIndex=>6 
0=>love 
7-10:you 
input=>I love you! 
index=>7 
lastIndex=>10 
0=>you 
說明:根據手冊,exec只返回匹配結果的第一個值,比如上例如果不用while循環,將只返回'I'(盡管i空格后的love和you都符合表達式),無論re表達式用不用全局標記g。但是如果為正則表達式設置了全局標記g,exec 從以 lastIndex 的值指示的位置開始查找。如果沒有設置全局標志,exec 忽略 lastIndex 的值,從字符串的起始位置開始搜索。利用這個特點可以反復調用exec遍歷所有匹配,等價于match具有g標志。 
當然,如果正則表達式忘記用g,而又用循環(比如:while、for等),exec將每次都循環第一個,造成死循環。 
exec的輸出將包含子匹配項。 
例子3: 
復制代碼代碼如下:

function execDemo(){ 
var r, re; // 聲明變量。 
var s = "The rain in Spain falls mainly in the plain"; 
re = /[/w]*(ai)n/ig; 
r = re.exec(s); 
document.write(r + "<br/>"); 
for(key in r){ 
document.write(key + "-" + r[key] + "<br/>"); 


window.onload = execDemo(); 

輸出: 
rain,ai 
input-The rain in Spain falls mainly in the plain 
index-4 
lastIndex-8 
0-rain 
1-ai 
test 方法 
返回一個 Boolean 值,它指出在被查找的字符串中是否匹配給出的正則表達式。 
rgexp.test(str) 
參數 
rgexp 
必選項。包含正則表達式模式或可用標志的正則表達式對象。 
str 
必選項。要在其上測試查找的字符串。 
說明 
test 方法檢查字符串是否與給出的正則表達式模式相匹配,如果是則返回 true,否則就返回 false。 
例子4: 
復制代碼代碼如下:

function TestDemo(re, s){ 
var s1; 
if (re.test(s)) 
s1 = " 匹配正則式 "; 
else 
s1 = " 不匹配正則式 "; 
return("'" + s + "'" + s1 + "'"+ re.source + "'"); 

window.onload = document.write(TestDemo(/ab/,'cdef')); 

輸出結果:'cdef' 不匹配正則式 'ab' 
注意:test()繼承正則表達式的lastIndex屬性,表達式在匹配全局標志g的時候須注意。 
例子5: 
復制代碼代碼如下:

function testDemo(){ 
var r, re; // 聲明變量。 
var s = "I"; 
re = /I/ig; // 創建正則表達式模式。 
document.write(re.test(s) + "<br/>"); // 返回 Boolean 結果。 
document.write(re.test(s) + "<br/>"); 
document.write(re.test(s)); 

testDemo(); 

輸出結果: 
true 
false 
true 
當第二次調用test()的時候,lastIndex指向下一次匹配所在位置1,所以第二次匹配不成功,lastIndex重新指向0,等于第三次又重新匹配。下例顯示test的lastIndex屬性: 
例子6: 
復制代碼代碼如下:

function testDemo(){ 
var r, re; // 聲明變量。 
var s = "I"; 
re = /I/ig; // 創建正則表達式模式。 
document.write(re.test(s) + "<br/>"); // 返回 Boolean 結果。 
document.write(re.lastIndex); // 返回 Boolean 結果。 

testDemo(); 

輸出: 
true 

解決方法:將test()的lastIndex屬性每次重新指向0,re.lastIndex = 0; 

search 方法 
返回與正則表達式查找內容匹配的第一個子字符串的位置(偏移位)。 
stringObj.search(rgExp) 
參數 
stringObj 
必選項。要在其上進行查找的 String 對象或字符串文字。 
rgExp 
必選項。包含正則表達式模式和可用標志的正則表達式對象。 
說明:如果找到則返回子字符至開始處的偏移位,否則返回-1。 
例子6: 
復制代碼代碼如下:

function SearchDemo(){ 
var r, re; // 聲明變量。 
var s = "The rain in Spain falls mainly in the plain."; 
re = /falls/i; // 創建正則表達式模式。 
re2 = /tom/i; 
r = s.search(re); // 查找字符串。 
r2 = s.search(re2); 
return("r:" + r + ";r2:" + r2); // 返回 Boolean 結果。 

document.write(SearchDemo()); 

輸出:r:18;r2:-1 
replace 方法 
返回根據正則表達式進行文字替換后的字符串的復制。 
stringObj.replace(rgExp, replaceText) 
參數 
stringObj 
必選項。要執行該替換的 String 對象或字符串文字。該字符串不會被 replace 方法修改。 
rgExp 
必選項。為包含正則表達式模式或可用標志的正則表達式對象。也可以是 String 對象或文字。如果 rgExp 不是正則表達式對象,它將被轉換為字符串,并進行精確的查找;不要嘗試將字符串轉化為正則表達式。 
replaceText 
必選項。是一個String 對象或字符串文字,對于stringObj 中每個匹配 rgExp 中的位置都用該對象所包含的文字加以替換。在 Jscript 5.5 或更新版本中,replaceText 參數也可以是返回替換文本的函數。 
說明 
replace 方法的結果是一個完成了指定替換的 stringObj 對象的復制。意思為匹配的項進行指定替換,其它不變作為StringObj的原樣返回。 
ECMAScript v3 規定,replace() 方法的參數 replacement 可以是函數而不是字符串。在這種情況下,每個匹配都調用該函數,它返回的字符串將作為替換文本使用。該函數的第一個參數是匹配模式的字符串。接下來的參數是與模式中的子表達式匹配的字符串,可以有 0 個或多個這樣的參數。接下來的參數是一個整數,聲明了匹配在 stringObject 中出現的位置。最后一個參數是 stringObject 本身。結果為將每一匹配的子字符串替換為函數調用的相應返回值的字符串值。函數作參可以進行更為復雜的操作。 
例子7: 
復制代碼代碼如下:

function f2c(s) { 
var test = /(/d+(/./d*)?)F/b/g; // 說明華氏溫度可能模式有:123F或123.4F。注意,這里用了g模式 
return(s.replace 
(test, 
function(Regstr,$1,$2,$3,newstrObj) { 
return(("<br/>" + Regstr +"<br/>" + ($1-32) * 1/2) + "C" +"<br/>" + //以下兩行進行替換 
$2 +"<br/>" + $3 +"<br/>" + newstrObj +"<br/>" ); 


); 

document.write(f2c("Water: 32.2F and Oil: 20.30F.")); 

輸出結果: 
Water: //不與正則匹配的字符,按原字符輸出 
32.2F //與正則相匹配的第一個字符串的原字符串 Regstr 
0.10000000000000142C //與正則相匹配的第一個字符串的第一個子模式匹配的替換結果 $1 
.2 //與正則相匹配的第一個字符串的第二個子模式匹配項的替換結果,這里我們沒有將它替換 $2 
7 //與正則相匹配的第一個字符串的第一個子匹配出現的偏移量 $3 
Water: 32.2F and Oil: 20.30F. //原字符串 newstrObj 
and Oil: //不與正則匹配的字符 
20.30F //與正則相匹配的第二個字符串的原字符串 
-5.85C //與正則相匹配的第二個字符串的第一個子模式與匹配的替換結果 
.30 //與正則相匹配的第二個字符串的第二個子模式匹配項的替換結果,這里我們沒有將它替換 
22 //與正則相匹配的第二個字符串的第一個子匹配出現的偏移量 
Water: 32.2F and Oil: 20.30F. //原字符串 
. //不與正則匹配的字符 
上面的函數參數我們全部用到了。在實際中,我們只須用將xxF替換為xxC,根據要求,我們無須寫這么多參數。 
例子8: 
復制代碼代碼如下:

function f2c(s) { 
var test = /(/d+(/./d*)?)F/b/g; // 說明華氏溫度可能模式有:123F或123.4F 
return(s.replace 
(test, 
function(strObj,$1) { 
return((($1-32) * 1/2) + "C"); 


); 

document.write(f2c("Water: 32.2F and Oil: 20.30F.")); 

輸出:Water: 0.10000000000000142C and Oil: -5.85C. 
更多的應用: 
例子9: 
復制代碼代碼如下:

function f2c(s) { 
var test = /([/d]{4})-([/d]{1,2})-([/d]{1,2})/; 
return(s.replace 
(test, 
function($0,$1,$2,$3) { 
return($2 +"/" + $1); 


); 

document.write(f2c("today: 2011-03-29")); 

輸出:today: 03/2011 
split 方法 
將一個字符串分割為子字符串,然后將結果作為字符串數組返回。 
stringObj.split([separator[, limit]]) 
參數 
stringObj 
必選項。要被分解的 String 對象或文字。該對象不會被 split 方法修改。 
separator 
可選項。字符串或 正則表達式 對象,它標識了分隔字符串時使用的是一個還是多個字符。如果忽略該選項,返回包含整個字符串的單一元素數組。 
limit 
可選項。該值用來限制返回數組中的元素個數。 
說明 
split 方法的結果是一個字符串數組,在 stingObj 中每個出現 separator 的位置都要進行分解。separator 不作為任何數組元素的部分返回。 
例子10: 
復制代碼代碼如下:

function SplitDemo(){ 
var s, ss; 
var s = "The rain in Spain falls mainly in the plain."; 
// 正則表達式,用不分大不寫的s進行分隔。 
ss = s.split(/s/i); 
return(ss); 

document.write(SplitDemo()); 

輸出:The rain in ,pain fall, mainly in the plain. 

js正則表達式之exec()方法、match()方法以及search()方法 

先看代碼:

var sToMatch = "test, Tes, tst, tset, Test, Tesyt, sTes";
var reEs = /es/gi;
alert(reEs.exec(sToMatch));
alert(sToMatch.match(reEs));
alert(sToMatch.search(reEs));

三個彈出框內容如下:

js正則函數match、exec、test、search、replace、split使用介紹集合

js正則函數match、exec、test、search、replace、split使用介紹集合

js正則函數match、exec、test、search、replace、split使用介紹集合

結果分析如下:

1、RegExp的exec()方法,有一個字符串參數,返回一個數組,數組的第一個條目是第一個匹配;其他的是反向引用。所以第一個返回的結果是第一個匹配的值es(不區分大小寫)。

2、String對象有一個match()方法,它返回一個包含在字符串中所有匹配的數據。這個方法調用string對象,同時傳給它一個RegExp對象。所以第二個彈出語句返回的是所有符合正則表達式的數組。

3、search()的字符串方法與indexOf()有些類似,但是它使用一個RegExp對象而非僅僅一個子字符串。search()方法返回第一個匹配值的位置。所以第三處彈出的是“1”,即第二個字符就匹配了。注意的是search()方法不支持全局匹配正規表達式(帶參數g)。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品青青在线观看爽香蕉| 亚洲色图校园春色| 国产亚洲精品激情久久| 亚洲成av人乱码色午夜| 午夜精品一区二区三区在线| 久久久久久这里只有精品| 亚洲a级在线播放观看| 91国产精品视频在线| 国产精自产拍久久久久久蜜| 91在线视频导航| 成人疯狂猛交xxx| 97在线精品视频| 日韩av电影在线免费播放| 久久精品视频亚洲| 国产精品视频中文字幕91| 久久视频在线看| 精品国内产的精品视频在线观看| 精品小视频在线| 欧美一级大片视频| xvideos成人免费中文版| 日韩欧美国产一区二区| 亚洲国产小视频在线观看| 视频在线观看一区二区| 久久99久国产精品黄毛片入口| 7777精品久久久久久| 日韩中文字幕在线视频播放| 国产一区二区三区在线免费观看| 社区色欧美激情 | 98午夜经典影视| 成人乱色短篇合集| 91国自产精品中文字幕亚洲| 亚洲第一色中文字幕| 中文字幕在线视频日韩| 国产精品91一区| 国产精品99久久久久久白浆小说| 国产亚洲精品日韩| 欧美黄色片视频| 久久久日本电影| 久久久久久伊人| 国内精品免费午夜毛片| 在线一区二区日韩| 欧美大片大片在线播放| 国产精品亚洲美女av网站| 色综合亚洲精品激情狠狠| 亚洲国产婷婷香蕉久久久久久| 日韩电影免费在线观看| 日本国产一区二区三区| 国产一区二区三区在线视频| 成人做爽爽免费视频| 欧美激情欧美狂野欧美精品| 亚洲欧美国产制服动漫| 成人在线视频网站| 亚洲一区二区中文字幕| 欧美一级电影免费在线观看| 亚洲iv一区二区三区| 欧美性受xxxx黑人猛交| 亚洲国产婷婷香蕉久久久久久| 国产91对白在线播放| 久久成人人人人精品欧| www高清在线视频日韩欧美| 国产精品久久久亚洲| 在线观看日韩欧美| 久久精品国产久精国产思思| 97在线观看视频| 亚洲乱码一区av黑人高潮| 日韩中文字幕在线看| 亚洲国产婷婷香蕉久久久久久| 欧美电影《睫毛膏》| 69精品小视频| 色中色综合影院手机版在线观看| 日韩精品中文字幕有码专区| 国产精品自在线| 亚洲国产精彩中文乱码av| 欧美高清在线观看| 777午夜精品福利在线观看| 91精品啪aⅴ在线观看国产| 日韩在线观看免费av| 亚洲一区精品电影| 久久久久国产精品www| 久久久久久久久久久av| 91精品国产沙发| 一道本无吗dⅴd在线播放一区| 日韩av综合网站| 日韩免费观看高清| 日韩天堂在线视频| 国产欧美精品一区二区三区-老狼| 国内精品小视频| 亚洲美女中文字幕| 日韩亚洲一区二区| 亚洲伊人一本大道中文字幕| 久久久久久久av| 国产小视频国产精品| 亚洲日本aⅴ片在线观看香蕉| 91久久综合亚洲鲁鲁五月天| 高清一区二区三区日本久| 狠狠久久五月精品中文字幕| 51色欧美片视频在线观看| 在线观看91久久久久久| 国产精品爽爽ⅴa在线观看| 午夜欧美大片免费观看| 97久久精品人人澡人人爽缅北| 91沈先生作品| 97国产精品视频人人做人人爱| 97精品国产91久久久久久| 亚洲成av人影院在线观看| 国产va免费精品高清在线| 国产精品日日摸夜夜添夜夜av| 亚洲午夜国产成人av电影男同| 国产精品视频永久免费播放| 欧美疯狂xxxx大交乱88av| 成人日韩在线电影| 精品久久久久久久久国产字幕| 欧美小视频在线观看| 91天堂在线视频| 9.1国产丝袜在线观看| 国产综合视频在线观看| 91在线国产电影| 欧美大片va欧美在线播放| 91色视频在线导航| 国模视频一区二区三区| 精品久久久久久久久久ntr影视| 在线观看日韩av| 亚洲成人动漫在线播放| 日韩最新av在线| 欧美电影免费播放| 精品视频在线播放免| 亚洲精品国精品久久99热一| 亚洲精品视频网上网址在线观看| 成人高清视频观看www| 国产69精品久久久久9| 欧美电影在线观看高清| 91在线观看免费| 国内成人精品视频| 欧美福利视频在线| 影音先锋欧美在线资源| 中文字幕日韩在线观看| 国产欧美精品日韩精品| 久久久亚洲影院| 日本中文字幕久久看| 全亚洲最色的网站在线观看| 26uuu另类亚洲欧美日本一| 精品偷拍各种wc美女嘘嘘| 亚洲美女激情视频| 日韩在线激情视频| 亚洲黄色有码视频| 久久久久久久久久久av| 热久久美女精品天天吊色| 欧美福利在线观看| 九九热最新视频//这里只有精品| 国产xxx69麻豆国语对白| 久久亚洲精品中文字幕冲田杏梨| 亚洲人成网站999久久久综合| 国产一区二区美女视频| 成人福利网站在线观看| 亚洲娇小xxxx欧美娇小| 国产精品免费视频久久久| 欧美视频裸体精品| 国产精品欧美激情在线播放| 国产一区二区三区欧美| 亚洲视频在线观看视频| 亚洲精品动漫久久久久| 亚洲电影在线看| 亚洲综合精品伊人久久| 欧美黄色三级网站|