我有以下 Java 字符串,我需要将其与正则表达式进行比较,但这些字符串可以包含可能存在或不存在的可选值,我需要根据它们的可用性执行不同的操作:
字符串 1:带序列号
uri = https://myid.com/123/1234567890128/456/1111
字符串 2:无序列号
uri = https://myid.com/123/1234567890128
正如我们所看到的,传入的字符串可以有,/456/1111也可以没有。如何编写单个正则表达式函数来检查它是否存在?我写了一个正则表达式,但它只有在/456/1111存在时才有效:
uri.matches("(http|https)://.*/123/[0-9]{13}.*)")
在查看此处的一些答案后,我尝试添加可选值,如下所示:
uri.matches("(http|https)://.*/123/[0-9]{13}+([/456/[0-9]{1,20}]?)")
但由于某种原因,它不起作用。有人可以帮助我如何验证uri中是否存在任何字符串/456/1111。我觉得我错过了一些小东西。