簡體   English   中英

具有特定符號的正則表達式數學路徑

[英]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 )。 這可以隨后任意數量. 並再次檢查(一個單詞和索引)。

請在regex101查看

長期解決方案但有效:

^(\w+(?:(#[\d]+)*)?\.)(\w+(?:(#[\d]+)*)?\.)+(\w+(?:(#[\d]+)*)?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM