SIP和SIPS URI的正则表达式

时间:2019-03-25 11:38:42

标签: java regex regex-negation regex-group

样本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):([^@]+)@(.+)

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

1 个答案:

答案 0 :(得分:2)

您可以使用

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

请参见regex demo

详细信息

  • ^-字符串的开头
  • (sips?)-第1组:sipsips
  • :-冒号
  • ([^@]+)-组2:@以外的1个或更多字符
  • (?:@(.+))?-可选的非捕获组:
    • @-一个@字符
    • (.+)-第3组:尽可能多的除换行符以外的0+个字符
  • $-字符串的结尾。

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