我正在创建 Activity ,我需要验证文本区域中的正确输入类型。我想避免任何 XSS 或 Mysql 注入(inject)。
我想接受 [a-z] [A-Z] [0-9] [.] [,] 和空格。
我现在唯一得到的是:
Pattern pattern_ = Pattern.compile("^[:alpha:]+(?:(?:\\s+|-)[:alpha:]+)*$");
你会如何实现它?
最佳答案
正是您所要求的
如果您只想完全接受字符[a-z]
、[A-Z]
、[0-9]
、 .
、,
,最直接的方式就是匹配正则表达式^[a-zA-Z0-9.,\s]*$
. (请参阅Regexr。)
为什么这不是一个好主意
根据数据的不同,像这样严格限制输入并不是一个好主意。
如果您的数据输入字段用于输入人员姓名,则不允许用户输入带重音字符的姓名或英语以外语言的姓名。 Thévenin
(法国名字)将被淘汰,因为它包含重音 é
。中国姓氏伟
也是非法的。希腊名字Aφρουδάκης
是完全非法的。
你应该做什么
您的语言应该有清理输入数据的方法。这些将防止 SQL 或 XSS 攻击,而不会禁止其他无害的数据,例如 伟
。有关输入清理的一般概述,请参阅此问题:What are the best PHP input sanitizing functions?
关于java - 验证文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19012449/