清理国际用户名

时间:2011-07-18 20:02:03

标签: regex unicode sanitization

1 个答案:

答案 0 :(得分:0)

这取决于您的要求。当你处理正则表达式时,很难确定一种语言中的标点符号在另一种语言中是不是有效字符。如果您只是想从数据库中不小心输入文本,我会通过JavaScript运行该正则表达式,并询问用户是否确定如果正则表达式找到的内容看起来不像字符那么他们输入了正确的信息。然后,用户可以选择是否提交或更正其名称。这使得用户只在很少有可能输入非文本的情况下仔细检查他们的工作,因此不会使绝大多数用户烦恼,但允许少数有问题名称的少数人不被卡住由于您的代码删除了字符,因此无法正确输入其名称。

这对我来说似乎是全方位的最佳方法,因为你已经存储了unicode,所以如果用户确实输入你认为可能是标点符号但实际上没有输入的东西,并且单个用户决定的可能性就不应该破坏恶意进入标点似乎很低(为什么会有人这样做?)。另外,你可以在服务器端使用标准标点符号制作单独的正则表达式[,。!?等......在任何情况下你都不想允许。

最后,您可以添加验证码以阻止垃圾邮件机器人试图恶意输入错误的名称。