a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁(yè) > 編程 > regex > 正文

javascript的正則表達(dá)式學(xué)習(xí)資料復(fù)習(xí)

2020-01-20 22:16:54
字體:
供稿:網(wǎng)友
關(guān)于反向引用
復(fù)制代碼 代碼如下:

// 測(cè)試函數(shù)
function matchReg(reg, str) {
var result = str.match(reg);
if(result) {
console.dir(result);
} else {
console.log('match failed');
}
}

var reg = /([A-Za-z]{0,6})/1/;
var str = 'AndrewAndrew';
// 測(cè)試通過
matchReg(reg, str);

//通過(?:pattern)的方式,不記錄子表達(dá)式匹配的內(nèi)容(本例中為Andrew)
//所以/1對(duì)子表達(dá)式匹配內(nèi)容的引用失敗了
//注意:這里強(qiáng)調(diào)的是子表達(dá)式所匹配的內(nèi)容,而不是子表達(dá)式本身
reg = /(?:[a-zA-Z]{0,6})/1/;
// 測(cè)試不通過
matchReg(reg, str);

關(guān)于子表達(dá)式的定義
var parse_number = /^-?/d+(?:/./d*)?(?:e[+/-]?/d+)?$/i;
這是一個(gè)解析數(shù)字的正則表達(dá)式,其中的子表達(dá)式有(?:/./d*)和(?:e[+/-]?/d+)
/.和/-分別是對(duì).和-的轉(zhuǎn)義表達(dá)
順便復(fù)習(xí)下.表示除換行符以外的其他字符
-一般用于[a-zA-Z0-9]表示匹配范圍
如果其中沒?:例如(/./d*)那么按照先后順序,反向引用的關(guān)系如下
/1-->(/./d*)
/2-->(e[+/-]?/d+)
如果有更多的話,就以此類推/3 /4 /5....
再次強(qiáng)調(diào),引用的是子表達(dá)式匹配的內(nèi)容,是具體的文本
關(guān)于正向預(yù)查
復(fù)制代碼 代碼如下:

var reg = /I like (?=shanghai)/;
var str = 'I like shanghai';
matchReg(reg, str); //測(cè)試通過

str = 'I like beijing';
matchReg(reg, str); //不通過

跑下上面的代碼,就馬上理解什么算是正向預(yù)查了,如上面的例子,通過(?=pattern)的形式,正則 表達(dá)式預(yù)測(cè)下后面的內(nèi)容是不是符合要求,如果是那就順利匹配.
相對(duì)地,(?!=pattern)的使用意圖正好與(?=pattern)相反,就不復(fù)述了
關(guān)于貪心和非貪心匹配模式
復(fù)制代碼 代碼如下:

// 貪心
var reg = //d{1,}/;
var str = '1999';
matchReg(reg, str); // result[0]為1999 能多匹配就多匹配

// 非貪心
reg = //d{1,}?/;
matchReg(reg, str); // result[0]為1 只匹配了一個(gè)

從上面的結(jié)果很容易看出"貪心"和"非貪心"的含義
pattern?這就表明非貪心匹配模式,一般情況就是貪心的
關(guān)于Regexp對(duì)象exec函數(shù)返回的結(jié)果
復(fù)制代碼 代碼如下:

// 關(guān)于返回結(jié)果是個(gè)什么
// matchReg函數(shù)中console.dir(result)能說明問題,firebug中一看便知
關(guān)于string的replace函數(shù)
function camelize(str) {
return str.replace(/-(/w)/g, function(inputStr, p1) {
console.log(p1);
return p1.toUpperCase();
});
}
console.log(camelize('background-color'));

function uncamelize(str, sep) {
sep = sep || '-';
return str.replace(/([a-z])([A-Z])/g, function(inputStr, p1, p2) {
console.log('p1:%s, p2:%s', p1, p2);
return p1 + sep + p2;
});
}
console.log(uncamelize('backgroundColor', '-'));

上面兩個(gè)例子,主要用于說明replace函數(shù)的用法,當(dāng)然還有search,split等函數(shù)可以充分利用正則表達(dá)式的優(yōu)勢(shì)
關(guān)于javascript正則表達(dá)式的最佳實(shí)踐
就一句話:盡量的精簡(jiǎn),不要復(fù)雜,利于讀懂和維護(hù)!
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 97人人插| 国产成人高清视频 | 毛片aaaaa| 国产亚洲精品美女久久久久久久久久 | 亚洲国产欧美在线 | 久久国产欧美一区二区三区精品 | 一级看片| 日韩视频精品 | 亚洲国产精品区 | 超碰天堂| 中文字幕一区二区三区乱码图片 | 亚洲精品欧美 | 精品日韩欧美一区二区三区 | 亚洲欧美日韩电影 | 麻豆视频91 | 中文在线a在线 | 狠狠91 | 一区二区三区在线免费观看 | 欧美日韩高清一区二区 | 久久99精品久久久久久琪琪 | 久久精品久久久久电影 | 日韩高清一级 | 成人午夜在线 | 久久精品二区 | 成人免费高清 | 欧美成人免费视频 | 亚洲国产成人久久综合一区,久久久国产99 | 日韩欧美精品一区二区三区 | 日韩高清在线播放 | 四虎影视最新免费版 | 在线成人av | 伊人网站 | 国产免费黄网站 | 久久国产亚洲精品 | 日韩精品免费在线 | 亚洲欧美999 | 精产国产伦理一二三区 | 国产在线一区二区 | 日操 | 国产偷国产偷精品高清尤物 | 国产在线一区二区三区 |