java - 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 之后:任何东西都可以接受
解决方案
您可以使用
^(sips?):([^@]+)(?:@(.+))?$
请参阅正则表达式演示。
细节
^
- 字符串的开始(sips?)
- 第 1 组:sip
或sips
:
- 一个冒号([^@]+)
- 第 2 组:1 个或更多字符,而不是@
(?:@(.+))?
- 一个可选的非捕获组:@
- 一个@
字符(.+)
- 第 3 组:除换行符之外的任何 0+ 个字符,尽可能多
$
- 字符串结束。
注意:如果您使用带有.matches()
方法的模式,^
并且$
是多余的并且可以从模式中删除,因为该方法需要完整的字符串匹配。
推荐阅读
- javascript - 计算解析的整数差时得到 NaN
- sql - 将多行合并为 1 - 更新表
- amazon-web-services - 如何配置 aws 事件桥以将事件作为内部或私有(VPC)发送到 URL
- flutter - 加载 tflite 模型颤振时失去与设备的连接
- python - 如何在 django 信号中以编程方式更新 m2m 字段
- java - Spring + MySQL 记录被复制而不是更新
- javascript - Intrexx - 通过 javascript 触发工作流
- php - Json 字符串在 2032 字节处被截断
- firebase - Flutter Firestore:通过参数更新对象数组
- .net-5 - BLAZOR WASM 自定义 RouteView 渲染被调用两次