【问题标题】:java string matching with regexjava字符串与正则表达式匹配
【发布时间】:2014-11-12 20:04:58
【问题描述】:

我有一个需要匹配的特定键。关键是 10 套 4 套,用破折号隔开。组合可以是字母或数字的组合。

示例。

aa11-bb22-cc33-44dd-55ee-66ff-gg77-hh88-99ii-jj10

我只想验证模式是 10 组,每组 4 组,用破折号分隔。

可能通过正则表达式匹配,但我不知道如何。

任何帮助将不胜感激。

【问题讨论】:

  • 这个正则表达式应该不难。你看过tutorials吗?

标签: java regex string pattern-matching


【解决方案1】:
^[a-zA-Z0-9]{4}(?:-[a-zA-Z0-9]{4}){9}$

试试这个。查看演示。

http://regex101.com/r/kP8uF5/11

【讨论】:

  • 不错的链接...不知道存在用于正则表达式测试的类似内容。
【解决方案2】:
([a-zA-Z0-9]{4}-){9}[a-zA-Z0-9]{4}

下面是正则表达式:http://regex101.com/r/xR1wV3/1

解释:

  1. [a-zA-Z0-9] --> 从 a 到 z、A 到 Z 和 0 到 9 的任意字符
  2. [a-zA-Z0-9]{4} --> {4} 表示正好是 4。所以[a-zA-Z0-9]{4} 表示 正好 4 个字符
  3. [a-zA-Z0-9]{4}- --> 在末尾添加一个破折号 (-) 匹配破折号分隔符。这应该与 aa11- 匹配 示例
  4. ([a-zA-Z0-9]{4}-) --> 将#3 放入括号中
  5. ([a-zA-Z0-9]{4}-){9} --> 将{9} 添加到括号中以指定此模式重复9次
  6. ([a-zA-Z0-9]{4}-)[a-zA-Z0-9]{4} --> 在末尾添加 [a-zA-Z0-9]{4} 以匹配最后一组 4 个字符(与上面的 #2 相同)

【讨论】:

  • 使用@vks 发布的工具:这是我的正则表达式 - 任何一个都有效:regex101.com/r/xR1wV3/1
  • 我已将其添加为单独的评论,但也将其添加到了答案中。谢谢。
【解决方案3】:

你可以这样做:

(?!.*_)(\w{4}-){9}\w{4}

这利用了\w 表示“任何字母、数字或下划线”这一事实,而否定的向前看可以防止下划线。

【讨论】:

  • @nhahtdh 是的,我知道,但是如果您阅读我的答案,您会发现这不是问题,因为我使用否定的前瞻性来断言输入中的任何地方都没有下划线。我在 NLA 中使用了 \w 以使正则表达式整体更短。
猜你喜欢
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多