单位字符串中单字母字符的正则表达式语法

时间:2013-12-20 17:21:31

标签: c# regex

我是regex语法的新手,正在寻找符合以下条件的方法:

  1. String包含1个字母字符,其余为数字
  2. 字符串以至少1位但不超过3位开头
  3. 以下字符是单个字母字符(大写或小写字母a-Z)
  4. 后跟4到6位数字
  5. 示例有效数据:

    1A1111
    1A11111
    1A111111
    11A1111
    11A11111
    11A111111
    111A1111
    111A11111
    111A111111
    

    我发现的大多数示例都匹配一个或多个值,所以我在努力解决如何匹配特定数量的字符以及可以找到它们的位置。

    例如:

    匹配字符串开头的1位或多位数字:@"^\d"

    或确保字符串至少包含一个Alpha字符:

    bool match = Regex.IsMatch(tokenString, @"(?=.*[^a-zA-Z])", RegexOptions.IgnoreCase);
    

    但这并没有告诉它只能有1个字母字符。

3 个答案:

答案 0 :(得分:6)

这将有效

^\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...  

答案 1 :(得分:3)

尝试使用这个。

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

答案 2 :(得分: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