数字字符串中单个字母字符的正则表达式语法
Posted
技术标签:
【中文标题】数字字符串中单个字母字符的正则表达式语法【英文标题】:Regex syntax for single alpha character in string of digits 【发布时间】:2014-01-09 14:57:26 【问题描述】:我是正则表达式语法的新手,正在寻找一种方法来匹配以下条件:
-
字符串有 1 个字母字符,其余为数字
字符串以至少 1 位但不超过 3 位开头
后面的字符是单个字母字符(大写或小写 a-Z)
后跟 4 到 6 位数字
有效数据示例:
1A1111
1A11111
1A111111
11A1111
11A11111
11A111111
111A1111
111A11111
111A111111
我发现的大多数示例都匹配 1 个或多个值,因此我正在努力解决如何匹配特定数量的字符以及可以在什么位置找到它们。
例如:
匹配字符串开头的 1 个或多个数字:@"^\d"
或确保字符串至少有一个字母字符:
bool match = Regex.IsMatch(tokenString, @"(?=.*[^a-zA-Z])", RegexOptions.IgnoreCase);
但这并不能说明它只能有 1 个字母字符。
【问题讨论】:
字符串开头的 1 个或多个数字。在您的正则表达式中使用 OR(即 | )修饰符。我想这就是你所缺少的,如果不是让我link 【参考方案1】:这会起作用
^\d1,3[a-zA-Z]\d4,6$
细分:
^ - match at beginning
\d1,3 - one to three digits
[a-zA-Z] - one letter a-z or A-Z
\d4,6 - followed by between 4 and 6 digits
$ - and that's end of the string...
【讨论】:
你们让它看起来很简单 :-) 感谢您的分解解释。【参考方案2】:尝试使用这个。
^\d1,3[a-zA-Z]\d4,6$
【讨论】:
【参考方案3】:以下模式应该可以满足您的要求:
^\d1,3[a-zA-Z]\d4,6$
好吧,既然您使用的是RegexOptions.IgnoreCase
,那么您只需:
^\d1,3[a-z]\d4,6$
有关正则表达式可以做什么的更多信息,请访问:
http://www.regular-expressions.info/reference.html
【讨论】:
以上是关于数字字符串中单个字母字符的正则表达式语法的主要内容,如果未能解决你的问题,请参考以下文章