正则表达式十六进制字符限制

时间:2014-04-02 09:32:42

标签: c# regex

我需要创建一个(C#)正则表达式,该表达式匹配具有一些规则的代码:

  1. 接受的字符为十六进制(和大写),(因此0-9 A-F):^[A-F0-9]*$
  2. 字符数介于9到10之间:^[A-F0-9]{9,10}$
  3. 同一个角色不能连续出现两次以上(例如 AAABCDEF0 不允许)
  4. 代码中不超过5个字母(例如 A1BC2E3FF4 不允许)
  5. 不超过两个数字相等(例如 A1BC1E1234 不允许)
  6. 不超过三个字母相等(例如 A1AA1234A5 不允许)
  7. 请记住,规则3-6可以出现在句子内的任何地方,不一定是开头)。如果你们中的任何人可以帮助我解决3到6之间的任何规则,我们将非常感激:)

    谢谢!

1 个答案:

答案 0 :(得分:1)

你的问题似乎无处不在(作业?)......你想解决的问题是什么?

如果你想自己做,为了让你开始,你应该尝试学习积极和消极lookahead

它们通常是一种在字符串上添加条件的简单方法。

例如,此正则表达式((?:...)是非捕获组):

#^(?=.{9,10}$)(?!(?:.*[A-Z]){6})[A-F0-9]*$

^
(?=.{9,10}$)            # check the regex is 9 or 10 charac long
(?!(?:.*[A-Z]){6})      # check there are no more than 5 letters
[A-F0-9]*$              # actually match the string (not mandatory if you just need to validate)

如果您想在线测试,regex101通常是一个很好的网站,可以学习和使用。

祝你好运!