java - 正则表达式 - 排除名称的单词列表

标签 java regex list words

我正在尝试制作一个接受这个的正则表达式:

  • 只有 a-z、0-9、_ 个字符,最小长度为 3
  • admin、static、my 和 www 被拒绝。

对于第一部分,我已经设法做到了:

^[a-zA-Z0-9\\_]{3,}$

但我不知道如何排除前面列出的单词。

例如,这意味着:

  • static 是不允许的(当然),但是
  • 静态是允许的
  • 静态是允许的

使用这个正则表达式:

^(?!static|my|admin|www).*$

效果不佳:它排除了 statice(以及未授权词之后的所有内容)。

您知道哪个正则表达式适合我的需要吗?

最佳答案

尝试这样的事情:

^(?!static$|my$|admin$|www$).*$

这将不允许使用“static”,但允许使用“statice”、“statica”等。通过将每个列入黑名单的单词锚定到字符串的末尾,您将仅在它们单独存在且没有任何尾随字符时匹配它们。

编辑: codeaddict提出了一种更简洁的方法来做基本相同的事情:

^(?!(?:static|my|admin|www)$).*$

关于java - 正则表达式 - 排除名称的单词列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540398/

相关文章:

java - 在单个字符串上匹配相同的表达式并转换为列表

MySQL 匹配这个正则表达式,但它不应该匹配

c# - .NET 正则表达式,只有数字,没有空格

css - 水平列表项之间的字符分隔符,可控制分隔符每一侧的空间

java - 使用运行时提供的属性动态对列表进行排序

c++ - 尝试对 C++ 中的数字列表进行排序

java - 使用 Joda-Time 计算持续时间

java - 如何制作按字母顺序对集合进行排序的通用函数

java - 查找多对多为空或相关条件不匹配的地方

java - 访问FXML生成的节点