佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > javascript的正則表達(dá)式學(xué)習(xí)資料復(fù)習(xí)

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

熱門(mén)標(biāo)簽:電子圍欄 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 銀行業(yè)務(wù) Linux服務(wù)器 阿里云 Mysql連接數(shù)設(shè)置 團(tuán)購(gòu)網(wǎng)站 服務(wù)器配置
關(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è)試通過(guò)
matchReg(reg, str);

//通過(guò)(?: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è)試不通過(guò)
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]表示匹配范圍
如果其中沒(méi)?:例如(\.\d*)那么按照先后順序,反向引用的關(guān)系如下
\1-->(\.\d*)
\2-->(e[+\-]?\d+)
如果有更多的話(huà),就以此類(lèi)推\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è)試通過(guò)

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

跑下上面的代碼,就馬上理解什么算是正向預(yù)查了,如上面的例子,通過(guò)(?=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)能說(shuō)明問(wèn)題,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è)例子,主要用于說(shuō)明replace函數(shù)的用法,當(dāng)然還有search,split等函數(shù)可以充分利用正則表達(dá)式的優(yōu)勢(shì)
關(guān)于javascript正則表達(dá)式的最佳實(shí)踐
就一句話(huà):盡量的精簡(jiǎn),不要復(fù)雜,利于讀懂和維護(hù)!
您可能感興趣的文章:
  • JavaScript 正則表達(dá)式使用詳細(xì)參數(shù)
  • 正則表達(dá)式提取網(wǎng)址、標(biāo)題、圖片等一例(.Net Asp Javascript/Js)的實(shí)現(xiàn)
  • javascript RegExp對(duì)象(正則表達(dá)式)
  • JavaScript 正則表達(dá)式 驗(yàn)證整數(shù)、小數(shù)、實(shí)數(shù)、有效位小數(shù)最簡(jiǎn)單
  • JavaScript 表單驗(yàn)證正則表達(dá)式大全[推薦]
  • javascript 手機(jī)號(hào)碼正則表達(dá)式驗(yàn)證函數(shù)
  • javascript 獲取url參數(shù)的正則表達(dá)式(用來(lái)獲取某個(gè)參數(shù)值)
  • javascript常用正則表達(dá)式合集
  • JavaScript基于正則表達(dá)式的數(shù)字判斷函數(shù)
  • javascript中使用正則表達(dá)式實(shí)現(xiàn)刪除字符串中的前后空格
  • javascript正則表達(dá)式基礎(chǔ)篇
  • 如何使用JavaScript和正則表達(dá)式進(jìn)行數(shù)據(jù)驗(yàn)證
  • 正則表達(dá)式語(yǔ)法規(guī)則及在Javascript和C#中的使用方法
  • javascript中正則表達(dá)式反向引用示例介紹
  • javascript正則表達(dá)式參數(shù)/g與/i及/gi的使用指南
  • javascript正則表達(dá)式簡(jiǎn)介
  • 如何用javascript正則表達(dá)式驗(yàn)證身份證號(hào)碼是否合法
  • JavaScript中常用的正則表達(dá)式日常整理(全)
  • 學(xué)習(xí)JavaScript正則表達(dá)式

標(biāo)簽:大理 棗莊 萍鄉(xiāng) 衡水 蚌埠 江蘇 衢州 廣元

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《javascript的正則表達(dá)式學(xué)習(xí)資料復(fù)習(xí)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266
    平陆县| 深泽县| 江陵县| 贵定县| 丹凤县| 霞浦县| 林周县| 大石桥市| 琼中| 利辛县| 易门县| 确山县| 金昌市| 乌兰察布市| 永登县| 平利县| 安福县| 颍上县| 阳谷县| 潼南县| 高雄市| 泾源县| 塔城市| 固原市| 临夏县| 湘潭市| 义马市| 仙桃市| 衡水市| 南岸区| 扶余县| 马尔康县| 阳新县| 滦平县| 麻江县| 武城县| 曲麻莱县| 福鼎市| 张家界市| 永德县| 翼城县|