【问题标题】:Regex syntax for single alpha character in string of digits数字字符串中单个字母字符的正则表达式语法
【发布时间】:2014-01-09 14:57:26
【问题描述】:

我是正则表达式语法的新手,正在寻找一种方法来匹配以下条件:

  1. 字符串有 1 个字母字符,其余为数字
  2. 字符串以至少 1 位但不超过 3 位开头
  3. 后面的字符是单个字母字符(大写或小写 a-Z)
  4. 后跟 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

标签: c# regex


【解决方案1】:

这会起作用

^\d{1,3}[a-zA-Z]\d{4,6}$

细分:

^        - match at beginning
\d{1,3}  - one to three digits
[a-zA-Z] - one letter a-z or A-Z
\d{4,6}  - followed by between 4 and 6 digits
$        - and that's end of the string...  

【讨论】:

  • 你们让它看起来很简单 :-) 感谢您的分解解释。
【解决方案2】:

尝试使用这个。

^\d{1,3}[a-zA-Z]\d{4,6}$

【讨论】:

    【解决方案3】:

    以下模式应该可以满足您的要求:

    ^\d{1,3}[a-zA-Z]\d{4,6}$
    

    好吧,既然您使用的是RegexOptions.IgnoreCase,那么您只需:

    ^\d{1,3}[a-z]\d{4,6}$
    

    有关正则表达式可以做什么的更多信息,请访问:

    http://www.regular-expressions.info/reference.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 2012-01-10
      相关资源
      最近更新 更多