我正在嘗試撰寫一個以“#”開頭的運算式,并接受以下型別的路徑,并且只接受字符 Az/az 并且不接受數字或特殊字符:示例有效路徑:
#/
#/word/word
#/word
#/word/word/word
這是我目前擁有的:
#\/\D |\/\D
我也試過:
#\/\D |\s\/^[A-Za-z\s]*$
它正確過濾了 85% 的路徑,但它仍然接受具有有效特殊字符的路徑,例如 "#/word/word?test=word" "#/word/word=%"
我不太確定我錯過了什么。
uj5u.com熱心網友回復:
我將正則運算式表述為:
^(?:#/|#/[A-Za-z] (?:/[A-Za-z] )*)$
這個正則運算式說匹配:
^
從字串的開頭(?:
#/
#/
自己匹配|
或者#/
匹配#/
[A-Za-z]
后跟路徑名(?:/[A-Za-z] )*
后跟零個或多個其他路徑
)
$
字串的結尾
演示
uj5u.com熱心網友回復:
您可以開始匹配,#/
然后可以選擇匹配尾隨部分:
^#\/(?:[A-Za-z] (?:\/[A-Za-z] )*)?$
解釋
^
字串的開始#\/
匹配#/
(?:
非捕獲組[A-Za-z]
匹配 1 個字符 A-Za-z(?:\/[A-Za-z] )*
可選擇重復/
和 1 個字符 A-Za-z
)?
關閉非捕獲組并使其可選$
字串結束
查看正則運算式演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/527117.html