是\/
in [-A-Z0-9+&@#\/%?=~_|!:,.;]
和[-A-Z0-9+&@#\/%=~_|]
(不是in:\/\/
)。大多数字符不必在字符类(方括号)内转义。这应该是等效的:/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/ig
因此,有关更多信息,请参见https://www.regular- expressions.info/charclass.html,但相关部分:
在大多数正则表达式中,字符类中唯一的特殊字符或元字符是右括号[],反斜杠\,脱字符^和连字符-。通常的元字符是字符类中的普通字符,不需要用反斜杠转义。要搜索星号或加号,请使用[+ *]。如果您转义字符类中的常规元字符,则您的正则表达式可以正常工作,但这样做会大大降低可读性。