样本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之后:可以接受任何东西
答案 0 :(得分:2)
您可以使用
^(sips?):([^@]+)(?:@(.+))?$
请参见regex demo。
详细信息
^
-字符串的开头(sips?)
-第1组:sip
或sips
:
-冒号([^@]+)
-组2:@
以外的1个或更多字符(?:@(.+))?
-可选的非捕获组:
@
-一个@
字符(.+)
-第3组:尽可能多的除换行符以外的0+个字符$
-字符串的结尾。注意:如果您将模式与.matches()
方法一起使用,则^
和$
是多余的,可以从模式中删除,因为该方法需要完整的字符串匹配。