国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > Regex > 正文

實現正則表達式highlight高亮的方法

2024-09-07 17:40:15
字體:
來源:轉載
供稿:網友

我們在編寫代碼的時候一般情況下都少不了和字符串以及“查詢”打交道的,這兩者交集中我們需要接觸到正則表達式,一般正則表達式用來提高編程效率,那么下面我們就去看看實現正則表達式highlight高亮的方法。

  關于正則的使用,舉個簡單的例子:

?

?

var m = location.href.match(/(/w+:)//{0,3}([^//]+)(?:(//[^/?#]*))?(?:(/?[^#]+|.+))?(?:(#.*))?/);
var res = {
??? protocol: m[1],
??? host: m[2],
??? path: m[3],
??? search: m[4],
??? hash: m[5]
};
console.log(res);

?

  憋了幾分鐘= =||,我也覺得這個正則不是特別好理解(紅黑相間了,應該稍微清晰點),有些朋友可能不知道(?:content)是什么意思,還有類似(?!content)和(?=content)分組和前瞻的知識,建議去問問度哥和谷娘。


一. 正則應用小DEMO示例

下面是一串隨手寫的代碼,放在textarea中:

?

?

/**
* @author barret lee
* @date?? 2013-10-06
* @email? barret.china@gmail.com
*/

?

//outer var
var a = "this id outer string";

//closure
function b() {
?//inner var
?var a = "this is inner string";
?var g = a.replace(/this is inner string/g, function() {
??return new Function("/*clousure*/this.a")();
?});

?/**
?* @description closure - regExp test
?* @author barret lee
?*/
?function c() {
??return {
???a: a,
???g: g
??}
?}

?return c;
}

var s = b()(); //s.a, s.g

?

正則匹配,處理上面那堆字符串的小DEMO:

?

?

/**
* @author barret lee
* @date 2013-10-06
* @email barret.china@gmail.com
*/

?

//outer var
var a = "this id outer string";

//closure
function b() {
??? //inner var
??? var a = "this is inner string";
??? var g = a.replace(/this is inner string/g, function() {
??????? return new Function("/*clousure*/this.a")();
??? });

??? /**
??? * @description closure - regExp test
??? * @author barret lee
??? */
??? function c() {
??????? return {
??????????? a: a,
??????????? g: g
??????? }
??? }

??? return c;
}

var s = b()(); //s.a, s.g

?

跟著提示,下一步下一步多點幾下,可以看出效果還是可以滴。主要是這里的正則略微的麻煩,處理一個色變得琢磨老半天。

P.S:上面這玩意兒只是一個小測試,代碼相當不健壯,拿著學習正則練手~

二. 需要注意的地方

?

?

//step config
var config = {
??? regs: [
??????? /^/s+|/s+$/g,
??????? /(["'])(?://.|[^///n])*?/1/g,
??????? ///(?!/*|span).+//(?!span)[gim]*/g,
??????? /(////.*|///*[/S/s]+?/*//)/g,
??????? /(/*/s*)(@/w+)(?=/s*)/g,
??????? //b.../b/g
??? ],
  //...
};

?

這些正則我是分開來寫的,主要是為了做上面那個demo,方便單步顯示。但是把這些正則分開寫是相當不合理的,放在textarea中的是一串沒有任何標簽的字符串,為了著色,每處理一個正則都會在codes中插入一些標簽(我這里用的是span),當我們處理下一個正則的時候就必須得考慮上一步加入的標簽,這樣會很大程度提高開發難度,最好的做法是把這些正則都放到一坨,然后用|隔開:

?

?

var reg = (/^/s+|/s+$/)|(/(["'])(?://.|[^///n])*?/1/)|(///(?!/*|span).+//(?!span)[gim]*/)|(/(////.*|///*[/S/s]+?/*//)/)|(/(/*/s*)(@/w+)(?=/s*)/)|(//b(break|continue|do|for|in|function|if|else|return|switch|throw|try|catch|finally|var|while|with|case|new|typeof|instance|delete|void|Object|Array|String|Number|Boolean|Function|RegExp|Date|Math|window|document|navigator|location|true|false|null|undefined|NaN)/b)

?

這樣放的好處是可以直接

?

?

codes.replace(reg, function(){
??? var args = arguments;
??? //...
});

?

一次性處理,不用擔心插入標簽影響最后的結果,因為標簽是同一時間插入的,不會有干擾。

代碼高亮插件highlight的基本原理也差不多,只不過他的容錯機制和代碼健壯性這塊做的更加完善,我在代碼里頭加了一個配置文件,

?

?

var colors = {
??? string: "#FFA0A0",
??? reg: "#16E916",
??? note: "#888",
??? tag: "orange",
??? keywords: "#B0B0FF"
};

?

按照自己的喜好,也可以加以修改,類似這樣的擴展,我們在寫代碼的時候稍微注意下,多留幾個接口就好了。(不過這些活兒干起來都還挺辛苦的~)

沒有做成插件,也沒這個必要,知道基本原理然后動手實踐下就差不多了。

三. 小結

類似很多的前端模板,artTemplate,baiduTemplate等都是對正則表達式的絕倫應用,很值得去看看源碼,好好鉆研人家都考慮了那些容易出錯的點,源碼都不長,兩三百行。了解一個大概比較容易,但是當自己動手的時候總會發現很多細節問題處理不好,我那上面幾個正則就倒弄了半天= =

上文就是小編為大家介紹實現正則表達式highlight高亮的方法,這個方法用起來還是挺方便的。正則技能,你值得擁有~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
黄色国产网站在线播放| 国产中文字幕在线播放| 国产午夜精品久久久久免费视| 69视频在线观看| 中文字幕在线视频不卡| 国产麻豆麻豆| 国产色在线 com| 91在线最新| 亚洲第一成人在线视频| 久久精品免视着国产成人| 久久久久久久久亚洲精品| 国产女人伦码一区二区三区不卡| 国产在线观看18| 国产aa视频| 亚洲社区在线| 国产美女被遭强高潮免费网站| 国产欧美久久久久久久久| 亚洲第一区视频| 国产经典av| 免费中文字幕| 国产色视频网站| 久热免费视频| av中文资源在线| 国产网站免费观看| 久久精品无码一区二区日韩av| 国产网红在线| 黄色av免费在线| 在线观看的网站你懂的| 中文字幕在线视频网| 在线国产小视频| 国产精品久久精品牛牛影视 | 国产精品不卡一区二区三区在线观看| 一本大道久久a久久精品| 国产在线观看18| 伊人222成人综合网| 国产综合视频一区二区三区免费| 99福利在线| 国产天堂在线观看| 黄网址在线永久免费观看| 91在线中文| 97在线免费| 伊人中文在线| 一区免费观看| 999在线视频| 在线黄色av| 午夜在线视频| av在线中文| а√资源新版在线天堂| 在线中文字幕av| 伊人永久在线| 欧美性猛交xxxx免费看蜜桃| 超碰97国产精品人人cao| av在线免费播放| 中文av在线播放| 亚洲欧美精选| 激情五月色综合亚洲小说| 国产美女极品在线| 国产无遮挡又黄又爽免费软件| 国产区成人精品视频| 91麻豆精品国产91久久| 在线观看精品视频一区二区三区| av在线不卡网站| 丁香婷婷激情| 国产视频中文字幕| 在线免费看黄av| 激情六月丁香| 精品电影在线| 俺来俺也去www色在线观看| 欧洲亚洲精品视频| 国产原创av在线| 国产香蕉免费精品视频| 2020中文字幕在线播放| 四虎a级欧美在线观看| 黄色电影网站在线观看| 国产黄色在线| 精品999视频| 麻豆电影传媒二区| 国产福利在线| 麻豆网站在线免费观看| 国产网红在线| 免费不卡中文字幕视频| 91www在线观看| 国产女人在线观看| а天堂8中文最新版在线官网| 国产娇喘精品一区二区三区图片| xxxx视频在线| 国产精品jvid在线观看| 人日人天天爽| 精品一区二区三区免费站| 蜜桃视频中文字幕| 伊人222成人综合网| 国产精品亚洲色图| 青青艹在线视频| 国产福利电影在线| 国产美女被遭强高潮免费网站| 精品久久av| 国产色视频网站| 国产日韩网站| 九九精品视频在线观看九九| 日本高清中文字幕二区在线| 精品一区二区三区在线成人 | 超碰国产在线| av中文资源在线| av在线1区2区| www.操.com| 在线播放国产区| 在线视频观看你懂的| 国产系列电影在线播放网址| 国产在线一区二区视频| 思思99精品视频在线观看| 伊人精品影院| 男人操女人免费网站| xxx国产精品| 欧美xxxx黑人又粗又长| www.毛片| 国产麻豆精品视频一区二区| xxxxx中文字幕| 日韩a视频在线观看| 一区二区三区免费视频网站| 91极品在线| 人成在线免费视频| 国产在线视频自拍| 天天爱天天做色综合| 国产女人伦码一区二区三区不卡| 成人av小说网| 精品99又大又爽又硬少妇毛片| 99久久国产视频| 在线观看中文字幕一区| 在线黄色av| 天天操天天是| 69av二区| 国自产拍在线网站网址视频| 国产精品国产国产aⅴ| 性国产高清在线观看| 天天操人人干| av在线你懂的| 国产爆初菊在线观看免费视频网站| 国产高清在线a视频大全| www.91av| 97一区二区三区| 大香伊人中文字幕精品| 国产精品入口麻豆高清| 日本h片在线观看| 国产精品第八页| 久草视频国产| 四虎成人精品在永久在线观看| 国产三级在线免费观看| 欧美性猛交xxxx免费看蜜桃| 国产精品第八页| 日本中文字幕在线视频| 人日人天天爽| 先锋av资源网| 精品视频一区二区观看| 国产亚洲精品一区二区在线观看 | 91三级在线| 国产日本在线| 最近中文字幕在线中文视频| 欧美成人亚洲高清在线观看| 在线一区二区三区精品| 国产成免费视频| 91欧洲在线视精品在亚洲| 国产精品入口麻豆免费| 国产一起色一起爱| 国产九色porn网址| 国产中文伊人| 福利在线观看| 青青青手机在线视频观看| 精品乱码一区二区三四区视频| 国产亚洲依依| 国产女呦网站| 国产精品国产国产aⅴ| 午夜伦全在线观看| 国产在线观看91| yjizz视频网站在线播放| 三级小说一区| 久久久久久国产视频| 黄网站在线观看高清免费| 国产在线激情视频| 国产一级在线观看| 国产日本在线| 在线国产一区二区三区| 欧美日韩亚洲第一页| 天堂资源最新版在线视频观看免费网| 国产免费福利网站| 中文字幕日本在线| 1区不卡电影| 在线一区二区三区精品| 久久久久久久久久久久网站| 狠狠色丁香婷婷| 国产亚洲依依| wwwww亚洲| 国产色在线播放| 免费观看v片在线观看| 国产一级黄色片免费| 国产成人精品18| 黄色电影网站在线观看| 在线视频二区| 国产精品入口免费麻豆| 欧美婷婷久久五月精品三区| 国产变态拳头交视频一区二区|