首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有在字符串出现一次且是最后一次出现的情况下才匹配正则表达式

问只有在字符串出现一次且是最后一次出现的情况下才匹配正则表达式
EN

Stack Overflow用户
提问于 2022-05-06 03:19:11
回答 2查看 39关注 0票数 0

希望标题是有意义的

我目前的判断是这个.phone.*.telephoneNumber\/?$。我正在尝试匹配json路径,路径看起来如下

  1. /phone/0/telephoneNumber -应该是match
  2. /phone/0/telephoneNumber/telephoneNumber -不应该与

匹配

用我现在的正则表达式,这两个匹配

我需要电话号码之前的.* 0或更多字符,因为在/phone/..之后可能会有任何字符,而且我只在没有其他/telephoneNumber的情况下才试图查找匹配的以telephoneNumber结尾的字符。

EN

回答 2

Stack Overflow用户

发布于 2022-05-06 06:27:39

0或更多的任何字符之前的电话号码。

如果您的意思是字符数可以是0或更多,那么请使用以下命令

代码语言:javascript
复制
\/phone\/(?:\w+\/)?telephoneNumber\/?$

如果您的意思是它应该大于0,那么使用以下

代码语言:javascript
复制
\/phone\/\d+\/telephoneNumber\/?$
票数 0
EN

Stack Overflow用户

发布于 2022-05-06 07:06:42

如果telephoneNumber是一个文字字符串,那么您可以使用负前瞻性来确保它不在phone/和/telephoneNumber.之间。

代码语言:javascript
复制
\/phone\/0\/((?!telephoneNumber).)*telephoneNumber$

匹配/phone/0/telephoneNumber

不匹配/phone/0/telephoneNumber/telephoneNumber

警告这与/phone/0/telephonenumber/telephoneNumber匹配,除非我们使用不区分大小写的选项/i。

因此,完整的正则表达式是

代码语言:javascript
复制
/\/phone\/0\/((?!telephoneNumber).)*telephoneNumber$/gmi

请参阅https://regex101.com/r/1WEF3U/1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72135795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档