正則表示式-linux路徑匹配
阿新 • • 發佈:2018-12-18
需求
使用正則表示式判斷字串是否為liunx路徑
格式要求:
- 必須'/'開頭
- 字串只允許字母、數字、下劃線
正確格式如下
/data/
/home/conf123
/data/nginx_conf/
錯誤格式如下
nginx_conf/ /data// /data/[email protected]#/
校驗的表示式
^\/(\w+\/?)+$
線上測試地址
定義
正則表示式(regular expression):描述了一種字串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。
正則表示式:就是用一個“字串”來描述一個特徵,然後去驗證另一個“字串”是否符合這個特徵。比如 表示式“ab+” 描述的特徵是“一個 'a' 和 任意個 'b' ”,那麼 'ab', 'abb', 'abbbbbbbbbb' 都符合這個特徵。
使用場景
1.驗證字串是否符合指定特徵,比如驗證是否是合法的郵件地址。
2.用來查詢字串,從一個長的文字中查詢符合指定特徵的字串,比查詢固定字串更加靈活方便。
3.用來替換,比普通的替換更強大。
分析
用於校驗上述格式的正確表示式
^\/(\w+\/?)+$
部分規則
正則表示式用到了很多字元,所以許多元字元要求在試圖匹配它們時特別對待。若要匹配這些特殊字元,必須首先使字元"轉義",即,將反斜槓字元 \ 放在它們前面。
用到的正則表示式的規則如下
字元 | 說明 |
---|---|
^ | 匹配輸入字串的開始位置,除非在方括號表示式中使用,此時它表示不接受該字元集合。匹配輸入字串的開始位置。要匹配 '^' 字元本身,請使用 '\^'。 |
$ | 匹配輸入字串的結尾位置。如果設定了 RegExp 物件的 Multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 '$' 字元本身,請使用 '\$'。 |
+ | 匹配前面的子表示式一次或多次。要匹配 '+' 字元本身,請使用 '\+'。 |
( ) | 標記一個子表示式的開始和結束位置。子表示式可以獲取供以後使用。要匹配這些字元,請使用 '\(' 和 '\)'。 |
\w | 匹配所有的字母、數字、下劃線的字元 |
? | 匹配前面的子表示式零次或一次,或指明一個非貪婪限定符。要匹配 '?' 字元,請使用 '\?'。 |
分析正則
- 前後使用了 '^' 和 '$' ,代表這裡要校驗整個字串(從字串開頭到結尾)。
- 接下來 '\/'字元 ,這裡用了斜杆轉譯,代表要以 / 開頭。
- 使用 '()'將子表示式寫在括號內。
- 括號內的表示式:'\w+',匹配出現一個或多個字母、數字、下劃線的字元。'\/?',匹配斜槓,可有可無。
- 括號外的+號,匹配括號內的規則,一次或者多次。
將上述分析總結:校驗整個字串 -> 以斜槓開頭 + ((一個或多個字串 + 可有可無的斜杆)* n(大於0)次) 。
思考
以上正則是一定以斜杆開頭的,不允許使用相對路徑,那如果我們想支援斜槓開頭可有可無,應該怎麼寫這個正則呢?
感謝您的閱讀,如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕。本文歡迎各位轉載,但是轉載文章之後必須在文章開頭給出原文連結。