java - 使用正则表达式在特殊条件下进行名称验证

标签 java regex

我想验证 Java 中的名称,该名称将允许单次使用以下特殊字符 {,-.'}。我能够使用表达式来实现,该表达式允许用户仅在字符串中输入此类特殊字符。但我无法弄清楚如何添加限制,使用户不能多次添加这些字符。我尝试使用量词来实现它,但仍然不成功。我已经完成了以下代码!

Pattern validator = Pattern.compile("^[a-zA-Z+\\.+\\-+\\'+\\,]+$");

最佳答案

您可以在正则表达式中使用前瞻断言:

Pattern validator = Pattern.compile(
  "^(?!(?:.*?\\.){2})(?!(?:.*?'){2})(?!(?:.*?,){2})(?!(?:.*?-){2})[a-zA-Z .',-]+$");

(?!(?:.*?[.',-]){2}) 是负向前瞻,意味着字符类中不允许出现超过 1 个字符。

RegEx Demo

关于java - 使用正则表达式在特殊条件下进行名称验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29992512/

相关文章:

java - 在Java中: UDP based Client/Server not giving the expected output

java - Spring:java.io.NotSerializedException:MapSqlParameterSource

正则表达式 Visual Basic UDF 未按预期执行

java - Java 中的 NFA 模拟

java - 如何正确改变Java中数组元素的值?

java - 在 2 个表上打印 2 个标题

java - 如何使用 Mockito 模拟 System.getProperty

mysql - 如何识别同一行内 3 个不同列中的重复数据并删除第二组重复数据?

python - 合并 json 中的重复键

python - 在 Python 中获取匹配字符串的特定模式后出现的数字