use*_*974 3 ruby regex ruby-on-rails
我想用特殊字符验证登录名!@#S%^*()+_-?/<>:"';.在轨道上的红宝石中使用正则表达式的空间.这些特殊字符不应被接受.那是什么代码?
您已在此线程中收到可以回答您的特定问题的正则表达式。您正在采用黑名单方法(阻止您不想要的字符),但这真的是最好的吗?我发现您没有涵盖 & 或 ~,并且可能仍然缺少许多其他特殊字符。
如果您尝试阻止特殊字符,我建议按照 pablorc 的正则表达式建议采用白名单方法。它的范围要广泛得多,只列出您想要允许的内容......非特殊字符:仅单词、下划线和数字。
我已经为您创建了一个方法,该方法使用此正则表达式执行白名单方法。
def valid_login?(str)
return true if (/^\w*$/.match(str))
return false
end
Run Code Online (Sandbox Code Playgroud)
仅当字符串包含字母、数字或下划线时,此方法 valid_login? 才会返回 true,因此所有特殊字符(以及您遗漏的任何其他不满足这些要求的字符)都会被安全地检测到。
用法:
> valid_login?("testy")
true
> valid_login?("a b")
false
> valid_login?("a'")
false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5401 次 |
| 最近记录: |