希望这个标题对有意义
我当前的正则表达式是.phone.*.telephoneNumber/?$
。我正在尝试匹配json路径,路径看起来像这个
- /phone/0/telephoneNumber-应匹配
- /phone/0/telephoneNumber/tephoneNumber-不应匹配
使用我当前的正则表达式,这两者都匹配
我需要电话号码前的.*
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