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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

正则式高人谈解答正则式的心得

發布時間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则式高人谈解答正则式的心得 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


條件1: 長度為14個字符
條件2: 其中任意9個位置為數字,并且數字只能是(0,1,3)
條件3: 其余的位置全部為"-"符號

------------------------------------------ 求一個正則表達式

?答案為:^(?!(.*?-){6,})(?!(.*?\d){10,})[013-]{14}$

以下是高人提出的解答思路,本人是受益匪淺,同時也貼出來方便大家學習,共同進步。

首先是正則問題的需求:
1、目的
2、規律或規則
3、應用環境

當我看到一個正則問題的時候,我希望看到的是一個以上三點都明確的問題
目的:希望用正則來做什么?驗證規則,提取,替換,分割等等。
規律或規則:符合什么樣的規律,或者是應遵守什么樣的規則。
應用環境:正則用于.NET程序中,還是驗證控件或javascript中。
另外就是一些細節的描述,比如提取是提取一條,還是同時提取多條等等。這方面當然是越詳細越好,有利于問題的盡快解決。


接下來談一談樓主這個問題
首先,可以看出這需要的是一個驗證規則的正則表達式。所以通常情況下,前面的“^”和后面的“$”是必不可少的。
接著是內容,字符固定(0、1、3、-)之一,位數固定,14位,那么基本的正則可以寫出
^[013-]{14}$

現在還剩下兩個需求:9個數字,5個-,但位置不固定。

還有一點是樓主沒有明確的,就是應用環境,如果是在.NET程序中,盡可以用各種方法來實現,甚至走一個極端,用窮舉法列出各種可能,然后用“|”或的關系組成一個正則,但那僅僅是一個極端而已,不通用,也無擴展性可言,再就是如果位數多一些,會累死的^o^

既然不能一一列舉可能性,就要把它作為條件來寫這個正則,可以用作條件的,就是正反向預搜索了
(?<=Exp)、(?<!Exp)、(?=Exp)、(?!Exp)

考慮到通用性和擴展性,放棄使用前三個,以上四個,.NET都支持,但是前兩個js中不支持,第三個js雖然支持,但是并不穩定,所以棄用。

那么現在就只是使用(?!Exp)做為條件了,思路確定,接下來是實現,至于(?!Exp)的詳細說明,參考一下相關教程吧,這里不做說明
(?!(.*?-){6,})
(?!(.*?\d){10,})
前一個限制“-”字符不能超過5個,后一個限制數字不能超過10個,再加上后面的{14}把字符數限制在14位,三個條件加起來,那就是9個數字,5個-,總數為14個^o^

分析過程是正向思維,最后的實現可以算是逆向思維,至于怎么想到,呵呵,或許可以算做是一點經驗吧。


轉載于:https://www.cnblogs.com/symbol441/archive/2007/09/18/897250.html

總結

以上是生活随笔為你收集整理的正则式高人谈解答正则式的心得的全部內容,希望文章能夠幫你解決所遇到的問題。

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