国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > regex > 正文

JScript中正則表達式用法詳解

2020-01-20 22:30:25
字體:
供稿:網(wǎng)友
呵呵,先羅嗦幾句,去年用C#做了一個語法高亮的小東西,根據(jù)配制文件中的信息把所給代碼格式化成HTML,使它能在網(wǎng)頁上顯示出和編輯器里一樣的語法元素高亮的效果以及支持代碼折疊。沒錯,就是和博客園上看到的類似啦。因為我當時使用的是MSN Space,它沒有提供這項功能,只好自己寫一個咯。

    我使用的是C#進行編寫,起初使用的是超級繁瑣的for,while,switch,if等基本語句來判斷關(guān)鍵字等等,大家莫笑話,本人愚笨當時還不知道正則表達式是何物,所以只能用這種土辦法了,當然土辦法還是有效果的,只是一個函數(shù)里冗長的代碼,以后要維護起來恐怕是非常難的,心想別的軟件不可能是這么寫的吧,于是乎到google上搜索了一陣,找到了些語法高亮的代碼和開源項目,開起來一看。。。。。暈,一個個都那么復(fù)雜,說實在我最不喜歡做的事就是看別人代碼了,不是我自命不凡,實在看別人代碼實在是很暈,除非是有非常詳細的文檔描述,要不然我瞄兩眼就不想看了,頂多是看看別人接口怎么寫的,然后猜測他內(nèi)部怎么實現(xiàn)。

    雖然搜索來的東西沒有多大幫助,不過還是讓我知道了正則表達式這個東東,具體忘記哪里看到的了。當時就開始一邊研究正則表達式一邊改造偶那“破玩意兒”。接著沒多久在博客園重新開博了,終于開用上博客園的語法加亮功能啦,于是自己寫個代碼HTML高亮顯示的東東就失去了一個主要動力了。其次,用C#做的語法高亮模塊,只能運行在服務(wù)器端,或者WinForm程序上,而我最終要獲取的是HTML代碼以顯示在頁面上,我認為還是客戶端腳本最適合這項工作。只可惜自己對JS并不甚了解。。。后來這段時間又胡搞瞎搞別的去了,也沒有再改進那個語法加亮模塊了。

    昨天加班晚上加班回到家里,本來打算繼續(xù)學習下UML見模,后來想起公司有一個模塊需要能剔出數(shù)據(jù)庫返回結(jié)果中的所有HTML標簽,我便打開正則表達式工具RegexBuddy。結(jié)果RegexBuddy的幫助文檔時看到了JScript使用正則表達式的簡單教學,于是乎好奇心又起,打開UltraEdit-32開始寫簡單的JavaScript試驗起來。

    我的試驗過程這里就不多廢話再復(fù)述了,因為很多地方是反復(fù)試驗繞很多彎路的,這里就直接給出試驗總結(jié)出來的JScript中正則的用法。

    廢話完畢,下面進入正題!   

    首相講講JScript的正則表達式對象RegExp。 

    JScript中提供正則表達式操作的類名為RegExp,可以用兩種方式實例化RegExp類型的對象。   

    方法一,構(gòu)造函數(shù)實例化: 

var myRegex = new RegExp("http://w+", "igm ");  
///w+為實際正則表達式,注意第一個/為轉(zhuǎn)義之用,igm分別表示忽略大小寫,全局搜索,多行搜索,這個后面會解釋  
    方法二,直接賦值法: 

var myRegex = //w+/igm;  
//效果與上一個語句一樣,只是這里不需要用轉(zhuǎn)移字符,原正則表達式是什么樣子就是什么樣子,igm就和前面例子的igm作用一樣 
    具體用什么方式看大家喜好了,個人覺得第二種方式寫的正則比較好讀些,RegexBuddy幫助文檔也是推薦第二種方式。   RegExp對象包含以下一些操作:

    exec(string str):執(zhí)行正則表達式匹配,并返回匹配結(jié)果,根據(jù)MSDN給出的例子運行結(jié)果看,exec每次執(zhí)行都是從上次直接的匹配結(jié)束位置開始,并且返回的值似乎是RerExp對象,而RegexBuddy給出的解釋是返回一個數(shù)組,但是沒有給出詳細例子,我覺得還是根據(jù)試驗結(jié)果為依據(jù)比較可靠。   

    compile(string regex, string flags):預(yù)編譯正則表達式以使其運行更快,經(jīng)過測試的確預(yù)先編譯后效率有明顯提升。regex參數(shù)為正則表達式,flags可以為以下3個值的組合: g  主站蜘蛛池模板: 吉安县| 遂宁市| 富民县| 阿拉善右旗| 克什克腾旗| 襄垣县| 凤山市| 马边| 永年县| 九龙城区| 马尔康县| 隆子县| 南和县| 葵青区| 新宾| 屏东市| 靖江市| 阳原县| 尖扎县| 荔波县| 长子县| 花垣县| 阳朔县| 昆山市| 庄浪县| 天长市| 阳朔县| 商河县| 弥勒县| 砚山县| 城口县| 徐汇区| 莆田市| 普陀区| 永靖县| 潜江市| 班玛县| 宁晋县| 苗栗市| 永修县| 神农架林区|