定义URL规范的RFC 1738规定只有字符
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+.-
Run Code Online (Sandbox Code Playgroud)
可以在URL方案中使用,也可以仅在字符中使用
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),;/?:@=&
Run Code Online (Sandbox Code Playgroud)
可以在URL的特定于方案的部分中使用未编码的.(;/?:@=&如果使用未编码,必须用于"保留目的",但如果您只是检查无效字符,则无需担心).因此,如果您想要完全通用,我会检查此正则表达式的URL:
"/([a-zA-Z+.-]+:\/\/)?([a-zA-Z0-9\$\-_\.\+\!\*'\(\),\;\/\?\:\@\=\&]+)/"
Run Code Online (Sandbox Code Playgroud)
(可能一些逃脱不是必要的).如果您只是在寻找HTTP URL,(其中一些)其他答案应该没问题.