[英]Regex math path with specific symbols
在這一刻,我有這樣的字符串: "document.info.userId"
(json屬性路徑)和正則表達式模式來驗證它們: ([\\w]+\\.)+[\\w]+$
但似乎有這樣的字符串: "document.role#0.id"
(數組的一些額外標記),它們是有效的,但我無法弄清楚使用哪個正則表達式模式。 該索引(#0,#1等)只能在點之前,而不能在任何路徑部分的中間。
我已經嘗試過模式([\\w#]+\\.)+[\\w#]+$
和([\\w]+(#\\d+)*\\.)+[\\w]+(#\\d+)*$
但是他們傳遞了這樣的無效路徑: test.some#a.hello
應該通過:
"document.role.id"
"document.role.id.and.other.very.long.path.example"
"document.role#0.id"
"document#1.role#0.id"
"document#1.role#0#1.id"
"document#1.role#0#1.id#21" - terrible representation of array in array
不應該通過:
"document."
"document.role."
".document"
"test.some#a.hello"
"docum#ent.role.id"
"document.role.#id"
"docu#1ment.role.id"
"document.ro#0#1le.id"
您可以添加一個可選的#[\\d]
:
^([\w]+(#[\d])*\.)+[\w]+$
^^^^^^^^
這樣,文本#N
,N是整數,可以發生也可以不發生。
請參閱https://regex101.com/r/mZ3mZ6/2中的一些示例輸入
考慮到您之后添加的所有樣本:
^([\w]+(#[\d]+)*\.)+[\w]+(#[\d]+)*$
這樣我們也檢查#N
,N是任何整數(不只是一個數字),並且還允許最后一個塊包含這樣的說明符。
通過https://regex101.com/r/mZ3mZ6/3查看所有案例。
嘗試
^\w+(?:#\d+)*(?:\.\w+(?:#\d+)*)*$
它首先檢查一個單詞后跟任意數量的索引( #N
)。 這可以隨后任意數量.
並再次檢查(一個單詞和索引)。
長期解決方案但有效:
^(\w+(?:(#[\d]+)*)?\.)(\w+(?:(#[\d]+)*)?\.)+(\w+(?:(#[\d]+)*)?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.