使用正则表达式验证字符串是否为URL安全

Isa*_*Lee 8 javascript regex encoding

我有一个用户可以选择用户名的网站.目前,他们几乎可以输入任何字符,包括@!#等

我知道我可以使用正则表达式,这可能是我选择的.

我将使用一个否定集,我假设这是正确的工具,因为:

[^@!#]
Run Code Online (Sandbox Code Playgroud)

那么,我怎么知道所有非法字符放在那个集合中呢?我可以开始手动输入那些显而易见的内容,例如!@#$%^&*(),但有没有一种简单的方法可以做到这一点,而无需手动将它们中的每一个都放入?

我知道很多网站只允许包含字母,数字,破折号或下划线的字符串.这样的事情对我来说很有用.

任何帮助将不胜感激.

谢谢!

hwn*_*wnd 17

而不是使用否定,只在您的角色类中放置您想要允许的内容.

^[a-zA-Z0-9_-]*$
Run Code Online (Sandbox Code Playgroud)

说明:

^                 # the beginning of the string
 [a-zA-Z0-9_-]*   #  any character of: 'a' to 'z', 'A' to 'Z', 
                  #  '0' to '9', '_', '-' (0 or more times)
$                 # before an optional \n, and the end of the string
Run Code Online (Sandbox Code Playgroud)

  • RFC-3986 表示字母数字“-”/“。” / "_" / "~" 所以为了完整性,这应该是: `^[a-zA-Z0-9._~-]*$` (3认同)