日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript 正则表达式-零宽断言

發布時間:2023/12/18 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript 正则表达式-零宽断言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://buzheng.org/blog/regex-zero-width-assertion/

正則表達式里面比較高級的應用就屬于零寬斷言了。那么什么是零寬斷言呢?拆分法從字面上分析一下,零寬,即寬帶為0,意味者不會返回匹配的字符,以為匹配的是當前字符的位置。斷言,就是預言、假設,意味著從此處假設存在什么情況。那么零寬斷言的意思就是假定從此位置開始滿足某種情況。

根據斷言字符串位于當前位置的前后關系,分為正向和反向斷言,根據斷言肯定和否定的語氣,又有正向否定斷言和反向否定斷言。肯定即斷言存在該字符串、否定即相反的意思:存在的不是該字符串,總之概念比較繞口,下表介紹的時候順便給出英文:

(?=X)正向斷言,假定該位置后跟的是X
zero-width positive lookahead
(?!X)正向否定斷言,假設該位置后跟的不是X
zero-width negative lookahead
(?<=X)反向斷言,假設該位置前跟的是X
zero-width positive lookbehind
(?<!X)反向否定斷言,假設該位置前跟的不是X
zero-width negative lookbehind

舉例:
(?=X) 正向斷言
[^s]+?(?=ing) 來匹配 having doing listing,會匹配出 hav, do, list,注意:并不會匹配出ing,因為ing是零寬斷言的部分。

(?!X) 正向否定斷言

一個用戶注冊功能的密碼有如下要求:由數字和字母組成,并且要同時含有數字和字母,且長度要在8-16位之間。

如何分析需求?拆分!這就是軟件設計的一般思路了。于是乎,拆分需求如下:
1,不能全部是數字
2,不能全部是字母
3,必須是數字或字母
只要能同時滿足上面3個要求就可以了,寫出來如下:

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$

分開來注釋一下:
^ 匹配一行的開頭位置
(?![0-9]+$) 預測該位置后面不全是數字
(?![a-zA-Z]+$) 預測該位置后面不全是字母
[0-9A-Za-z] {8,16} 由8-16位數字或這字母組成
$ 匹配行結尾位置

(?<=X) 反向斷言
(?<=hell)[a-z]+ 來匹配test hellen hellas helloween,會匹配出 en, as, oween

(?<!X) 反向否定斷言
[a-z]+(?<!hell)en 來匹配testen hellen hellas helloween,會匹配出testen和helloween

注:所有的案例都在UE下進行測試。

轉載于:https://www.cnblogs.com/anjey/archive/2012/08/16/2642332.html

總結

以上是生活随笔為你收集整理的javascript 正则表达式-零宽断言的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。