先放一个主流RTSP地址格式汇总https://blog.csdn.net/qq_34654240/article/details/79924390
不逼一逼自己你永远不知道前端能拼个什么校验出来
我就是个正则渣,我能搞出来现在这个规则我已经很满意了泪目( Ĭ ^ Ĭ )只为做个记录看看以后有没有别的写法
先说需求,前端需要严格校验RTSP地址,上面主流RTSP我都试过了可以通过
rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream
rtsp://admin:12345@192.0.0.64/h264/ch1/sub/av_stream
rtsp://192.168.200.202/axis-media/media.amp?videocodec=h264&resolution=1280x720
rtsp://admin:password@192.168.1.10
rtsp://192.168.0.100/live1.sdp
rtsp://192.168.0.100:554
..........
类似以下这种都判断为不正确的RTSP地址:
rtsp://admin:12345@192.0.0.64:
rtsp://admin:12345@192.0.0.64:aaa
rtsp://admin:12345@192.0.0.64wewrerwerw
放代码:
function isRTSP(str) {
const reg= /^rtsp:\/\/([a-z]{0,10}:.{0,10}@)?(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
const reg1= /^rtsp:\/\/([a-z]{0,10}:.{0,10}@)?(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]):[0-9]{1,5}/;
const reg2= /^rtsp:\/\/([a-z]{0,10}:.{0,10}@)?(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\//;
return (reg.test(str) || reg1.test(str) || reg2.test(str));
}