RTMP(Real-Time Messaging Protocol)是一种常用的流媒体传输协议,广泛应用于视频直播和点播场景。为确保地址格式正确,使用正则表达式进行校验是一种高效可靠的方法。本文将详细介绍RTMP地址的结构、校验规则,并提供可直接使用的正则表达式代码示例。
一个标准的RTMP地址通常包含以下部分:
rtmp://或rtmps://(加密版本)开头example.com或192.168.1.1:1935)/live或/vodstream123示例地址:rtmp://example.com:1935/live/stream123
基于RTMP地址的结构,我们设计以下正则表达式:
^(rtmp|rtmps):\/\/([\w.-]+)(:(\d+))?\/([\w\/.-]+)(\?([\w=&%-]+))?$
表达式解析:
^(rtmp|rtmps):匹配协议头(rtmp或rtmps):\/\/:匹配://([\w.-]+):匹配域名或IP(允许字母、数字、点、短横线)(:(\d+))?:可选端口号(冒号后接数字)\/([\w\/.-]+):匹配应用路径和流名称(允许斜杠、字母、数字等)(\?([\w=&%-]+))?$:可选查询参数(以问号开头,包含键值对)JavaScript版本:
function validateRTMP(url) {
const regex = /^(rtmp|rtmps):\/\/([\w.-]+)(:(\d+))?\/([\w\/.-]+)(\?([\w=&%-]+))?$/;
return regex.test(url);
}
// 测试
console.log(validateRTMP("rtmp://example.com/live/stream123")); // true
console.log(validateRTMP("rtmps://192.168.1.1:1935/vod/video.mp4")); // true
Python版本:
import re
def validate_rtmp(url):
pattern = r'^(rtmp|rtmps):\/\/([\w.-]+)(:(\d+))?\/([\w\/.-]+)(\?([\w=&%-]+))?$'
return bool(re.match(pattern, url))
# 测试
print(validate_rtmp("rtmp://example.com:1935/live/stream123")) # True
通过本文的正则表达式,可快速验证RTMP地址格式的合法性,减少因格式错误导致的连接问题。如需更严格的校验(如特定端口范围),可自行调整表达式中的数字匹配部分(如将(\d+)改为([1-9]\d{0,4})限制端口范围)。