2

有人可以帮我验证一下吗(正则表达式匹配缺点的新手)。
而不是问这个问题,我正在写这个:

Regex rgx = new Regex (@"^{3}[a-zA-Z0-9](\d{5})|{3}[a-zA-Z0-9](\d{9})$"

谁能告诉我好不好...

我要匹配的帐户是:

1. BAA89345  (8 chars)
2. 12345678  (8 chars)
3. 123456789112 (12 chars)

提前致谢。

4

5 回答 5

1

是具有 3 个字符的值,然后是始终以三个开头的数字......它可以以小于或大于三个开头。如果可以的话,这些数字之前的最小和最大字符是什么。

于 2012-10-04T19:12:12.647 回答
1

您需要将量词放在它们应该量化的字符之后。此外,字符类需要用方括号括起来。这应该有效:

@"^(?:[a-zA-Z0-9]{3}|\d{3}\d{4})\d{5}$"

有几个很好的自动化正则表达式测试器。您可能想查看regexpal

于 2012-10-04T19:13:42.267 回答
1

尽管这可能是一个完全有效的匹配,但我建议将其重写为:

^([a-zA-Z]{3}\d{5}|\d{8}|\d{12})$

这需要字符串匹配以下之一:

  • [a-zA-Z]{3}\d{5}三个字母和五个数字
  • \d{8}8 位数字或
  • \d{12}十二位数。

也更容易阅读...

于 2012-10-04T19:15:20.253 回答
1

您可以使用正则表达式测试器。网上有很多免费的。我的 Regex Tester是我目前最喜欢的。

于 2012-10-04T19:10:55.700 回答
0

我不是 100% 达成您的目标,但我可以立即看到一些问题。

  1. 当您列出要匹配的可接受字符时,例如 with a-zA-Z0-9,您需要将其放在括号内,例如在开头[a-zA-Z0-9] 使用 a将否定包含的字符,例如 `[^a-zA-Z0-9]^

  2. 单词字符可以匹配like \w,相当于[a-zA-Z0-9_].

  3. 量词需要出现在匹配表达式的末尾。因此,{3}[a-zA-Z0-9]您需要编写而不是[a-zA-Z0-9]{3}(假设您要匹配匹配的字符的三个实例[a-zA-Z0-9]

于 2012-10-04T19:16:10.203 回答