【问题标题】:Regex: how do i match repeating char or number正则表达式:我如何匹配重复的字符或数字
【发布时间】:2016-02-17 18:00:50
【问题描述】:

我想出了这个正则表达式:

^[pP]{2}[^a-m](\d)+

匹配:ppt92617ppy92619PPr99999k

问题是,第三个索引中的每个数字不应在字符串的其余部分重复。因此,第一个字符串将是匹配的,其他两个则不会。 我该怎么做?

【问题讨论】:

  • " 每个数字或字符的第三个字符不应重复" - 不清楚!
  • 问题陈述现已更正。
  • 是否允许pp11pp.1
  • 是的。该应用程序采用通用输入并将其解析为特定任务的特殊字符。喜欢这个密码。该政策有点冗长,但我特别坚持重复输入数字

标签: regex string pattern-matching repeat


【解决方案1】:

这是匹配唯一数字序列的正则表达式。假设您找到 5 个唯一数字,您的代码应如下所示:

^[pP]{2}[^a-m](?!.*(.).*\1)\d{5}$
  1. ^[pP]{2}[^a-m] 是你的代码,你知道的 :)
  2. ?! 是负前瞻
  3. .*(.).* 匹配一个被零个或多个字符包围的数字。 (.) 是捕获组(看起来像个胸部)。
  4. \d{5} 只允许前一组为 5 位
  5. 如果没有之前使用过的数字,它会一起检查五次(检查自己),因为 negative 前瞻。

用我蹩脚的英语很难解释清楚。几年前我已经找到并保存了这个正则表达式,尽管它在未来可能会有用。

最好看这里,以获得准确和正确的解释:Regex101

【讨论】:

  • 刚刚更新了您的正则表达式以显示其他示例:regex101.com/r/oU8dF5/2 也许您应该解释一下您在这里做什么(即负面预测)。尽管如此,+1。
  • 完成!非常感谢@nichar。简单而正确。中间部分对我的新手正则表达式大脑来说有点难。能帮上忙吗?
  • 再次感谢。我正在尝试将用户输入的密码与我的 Java 应用程序上的简单策略进行匹配。遍历每个字符会很麻烦,所以考虑使用正则表达式
  • 你会再次给我们一些代码和输入。我无法想象您想要什么,所以请不要犹豫,提出一个新的详细问题,我们会尽力再次帮助您。 ^^
  • 顺便说一句,如果你用它作为正确答案,我永远不会生气>,
猜你喜欢
  • 2013-06-03
  • 2022-10-12
  • 2016-10-24
  • 2023-03-09
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 2020-04-29
  • 2019-03-22
相关资源
最近更新 更多