用于检查 Firebase 安全规则中有效 URL 的正则表达式

Regex to check for valid URL in Firebase Security Rule

我正在尝试实施一个 firebase 安全规则,以使用正则表达式检查它是否有效 url。这是 url 的一些示例:

https://firebasestorage.googleapis.com/andTheRestIsJustThePartAfterIUploadedIntoFirebaseStorage

我用这个正则表达式来检查:

"imageURL": {
      ".validate": "newData.val().matches(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/)"
 }

但是,我在 Line 26: Invalid escape: '\+'.

处遇到错误

有什么想法吗?

没必要在 regex class 中转义 +,而是使用这个:

[-+=&;%@.\w_]

我在你的模式中看到另一个语法错误,一些字符应该被转义而不应该,你的模式应该是这样的:

/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+\$,\w]+@)?‌​[A-Za-z0-9.-]+|(?:ww‌​w.|[-;:&=+\$,\w]+@‌​)[A-Za-z0-9.-]+)((?:‌​\/[%+~\/.\w-_]*)?‌​\??(?:[-+=&;%@.\w_‌​]*)#?(?:[\w]*))?)/

但我不确定你的模式的逻辑,我建议阅读这篇文章以获取有关 Firebase Security Rules Regular Expressions

的更多信息