SIP和SIPS URI的正则表达式

问题描述 投票:0回答:1

示例Sip URI

   sip:[email protected]
   sip:alice:[email protected];transport=tcp
   sips:[email protected]?subject=project%20x&priority=urgent
   sip:+1-212-555-1212:[email protected];user=phone
   sips:[email protected]
   sip:[email protected]
   sip:atlanta.com;method=REGISTER?to=alice%40atlanta.com
   sip:alice;[email protected]

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

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

java regex regex-negation regex-group
1个回答
2
投票

你可以用

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

regex demo

细节

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

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

© www.soinside.com 2019 - 2024. All rights reserved.