有人可以帮我验证一下吗(正则表达式匹配缺点的新手)。
而不是问这个问题,我正在写这个:
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)
提前致谢。
有人可以帮我验证一下吗(正则表达式匹配缺点的新手)。
而不是问这个问题,我正在写这个:
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)
提前致谢。
是具有 3 个字符的值,然后是始终以三个开头的数字......它可以以小于或大于三个开头。如果可以的话,这些数字之前的最小和最大字符是什么。
您需要将量词放在它们应该量化的字符之后。此外,字符类需要用方括号括起来。这应该有效:
@"^(?:[a-zA-Z0-9]{3}|\d{3}\d{4})\d{5}$"
有几个很好的自动化正则表达式测试器。您可能想查看regexpal。
尽管这可能是一个完全有效的匹配,但我建议将其重写为:
^([a-zA-Z]{3}\d{5}|\d{8}|\d{12})$
这需要字符串匹配以下之一:
[a-zA-Z]{3}\d{5}
三个字母和五个数字\d{8}
8 位数字或\d{12}
十二位数。也更容易阅读...
您可以使用正则表达式测试器。网上有很多免费的。我的 Regex Tester是我目前最喜欢的。
我不是 100% 达成您的目标,但我可以立即看到一些问题。
当您列出要匹配的可接受字符时,例如 with a-zA-Z0-9
,您需要将其放在括号内,例如在开头[a-zA-Z0-9]
使用 a将否定包含的字符,例如 `[^a-zA-Z0-9]^
单词字符可以匹配like \w
,相当于[a-zA-Z0-9_]
.
量词需要出现在匹配表达式的末尾。因此,{3}[a-zA-Z0-9]
您需要编写而不是[a-zA-Z0-9]{3}
(假设您要匹配匹配的字符的三个实例[a-zA-Z0-9]