簡體   English   中英

僅當字符串出現一次並且是最后一次出現時才匹配正則表達式

[英]regex match only if there is one occurence of string and it's the last occurence

希望標題有意義

我當前的正則表達式是.phone.*.telephoneNumber\/?$ 我正在嘗試匹配 json 路徑,路徑看起來像這樣

  1. /phone/0/telephoneNumber - 應該匹配
  2. /phone/0/telephoneNumber/telephoneNumber - 不應匹配

使用我當前的正則表達式,這兩個都匹配

我需要.* 0 或更多電話號碼前的任何字符,因為/phone/..之后可能有任何字符,我正在嘗試查找以telephoneNumber結尾的匹配項,前提是它后面沒有跟另一個/telephoneNumber

0 個或多個電話號碼前的任何字符。

如果你的意思是字符數可以是 0 或更多,那么使用這個

\/phone\/(?:\w+\/)?telephoneNumber\/?$

如果你的意思是它應該是一個大於 0 的數字,那么使用這個

\/phone\/\d+\/telephoneNumber\/?$

如果telephoneNumber是文字字符串,那么您可以使用否定前瞻來確保它不在phone//telephoneNumber之間。

\/phone\/0\/((?!telephoneNumber).)*telephoneNumber$

匹配/phone/0/telephoneNumber
不匹配/phone/0/telephoneNumber/telephoneNumber

警告這與/phone/0/telephonenumber/telephoneNumber匹配,除非我們使用不區分大小寫的選項/i
因此,完整的正則表達式是

/\/phone\/0\/((?!telephoneNumber).)*telephoneNumber$/gmi

參見https://regex101.com/r/1WEF3U/1

暫無
暫無

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

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