java - 验证文本区域

标签 java regex

我正在创建 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/

相关文章:

java - 是否有一个库可以从数据存储/数据库中保存荣格图

java - 如何获取json字符串的值,然后通过这个函数解析它

java - 是否有类似于 .NET Microsoft Enterprise Library 的 Java 框架/程序集?

c# - 解析窗口 'ipconfig/all' 输出

php - 正则表达式 php 前瞻号码

javascript - 正则表达式和 GBP(£)

java - 如何使用 Apache Commons DirectoryWalker?

java - 如何使用 JUnit 断言元素包含 Selenium 中的文本

Python re : why does [, -_] 匹配 "="?

c++ - 包含在 std::regex 搜索中,使用 std::regex_token_iterator 从 std::sub_match 中排除