c# - 创建正则表达式以匹配带有字母后跟固定位数的字符串
问题描述
我们有一个用例,我们需要Uid
使用以下约束来验证一些:
长度为 5 的 Uid 格式为 annnnn,其中a
A
是除、B
和之外D
的任何字母E
。n0
是从到9
的任意数。
因此,我创建了新方法,该方法将验证相同并按预期工作。
/// <summary>
/// Validate Uid of lenght 5 in form annnnn where ‘a’ is any letter other than A, B, D and E.
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
private static bool IsValidUid( string value )
{
bool returnValue = false;
if (string.IsNullOrEmpty(value) == false && value.Length == 5)
{
char firstChar = value[0];
bool firstCharFailed = false;
switch (firstChar)
{
case 'A':
case 'B':
case 'D':
case 'E':
firstCharFailed = true;
break;
}
if (firstCharFailed == false)
{
string remainingStr = value.Substring(1, 4);
int numb;
if (int.TryParse(remainingStr, out numb) == true)
{
returnValue = true;
}
}
}
return returnValue;
}
但它可以通过正则表达式有效地完成。由于我不擅长它,我需要帮助为我创建一个!提前致谢!!
解决方案
其中“a”是除 A、B、D 和 E 以外的任何字母。
所以在这种情况下,您需要指定允许的字母集
[a-zF-ZC]
=> 表示所有字母都在范围 az 和 FZ 应该匹配,C 也应该匹配
'n' 是从 0 到 9 的任意数字。
\d
匹配一个数字,或者您可以使用[0-9]
长度为 5 的形式 annnnn
\d{4}
指定应该匹配的前一个字符的数量
最后一件事必须做。您需要指定,它a
应该在字符串的开头,并且字符串在第 5 个字符之后结束:
^
表示字符串的开头
$
表示字符串的结尾。
所以结合起来看起来像这样:
string pattern = @"^[a-zF-ZC]\d{4}$
或使用数字范围:
string pattern = @"^[a-zF-ZC][0-9]{4}$
这是正则表达式模式的概述以及示例和解释
这是一个站点,您可以在其中测试和试用您的正则表达式模式。摆弄它以了解它。它有助于
编辑:
[...]
表示将匹配的一组字符。范围使用in或等-
符号表示。任何其他字符都可以简单地放入集合中:a-z
A-F
5-9
[abcdefgxyz]
将只匹配那些指定的字母!
集合和范围可以组合
[CF-SX-Z]
将匹配and 和and之间的C
所有大写字母。我希望现在变得更清楚F
S
X
Z
推荐阅读
- amazon-web-services - 如何使用 RTSP 输入设置 AWS MediaLive?
- java - Java 错误无法解析“列表”中的方法“地图”
- java - java.util.zip.ZipException 不一致:gradle 项目上的 ZipFile 无效 LOC 标头
- ajax - 出了点问题,使用 jquery.post() 发送 post 请求
- python - 如何使用 Pyro4 在不同主机上实现多处理
- flutter - flutter:如何获取ListWheelChildLoopingListDelegate中选中项的索引?
- r - 基于R中包含变量名称的对象的子集数据框
- python - 如何从python中的字符串中删除(真正的)最后一个字符?[即不创建新参考]
- php - PHP使用函数写入文件
- python - Pygame如何处理状态