首页 > 解决方案 > SIP 和 SIPS URI 的正则表达式

问题描述

示例 SIP URI

   sip:alice@atlanta.com
   sip:alice:secretword@atlanta.com;transport=tcp
   sips:alice@atlanta.com?subject=project%20x&priority=urgent
   sip:+1-212-555-1212:1234@gateway.com;user=phone
   sips:1212@gateway.com
   sip:alice@192.0.2.4
   sip:atlanta.com;method=REGISTER?to=alice%40atlanta.com
   sip:alice;day=tuesday@atlanta.com

我创建的正则表达式^(sip|sips):([^@]+)@(.+)

我想要实现的是 @ 是可选的,如果 @is 在 @ 之前和之后应该有一些东西,否则在 sip 之后:任何东西都可以接受

标签: javaregexregex-negationregex-group

解决方案


您可以使用

^(sips?):([^@]+)(?:@(.+))?$

请参阅正则表达式演示

细节

  • ^- 字符串的开始
  • (sips?)- 第 1 组:sipsips
  • :- 一个冒号
  • ([^@]+)- 第 2 组:1 个或更多字符,而不是@
  • (?:@(.+))?- 一个可选的非捕获组:
    • @- 一个@字符
    • (.+)- 第 3 组:除换行符之外的任何 0+ 个字符,尽可能多
  • $- 字符串结束。

注意:如果您使用带有.matches()方法的模式,^并且$是多余的并且可以从模式中删除,因为该方法需要完整的字符串匹配。


推荐阅读