正则表达式C# - 匹配4或5位数字,前面是格式不一致的字符串

时间:2014-07-11 08:27:52

标签: regex

我正在寻找一些帮助匹配另一个字符串中的4或5位数字符串。

数字前面有" JC"但格式不一致。

示例:

JC1234
JC 1234
J.C1234
J.C 1234
J/C1234
J/C 1234
J C1234
J C 1234

J和C之间的字符可以是任何字符或空格。

我将不胜感激。

谢谢

4 个答案:

答案 0 :(得分:1)

您可以使用:

J[./ ]?C ?\d+

请参阅regex demo

<强>解释

  • J匹配文字字符
  • [./ ]?可选地匹配句点,斜杠或空格
  • C与C
  • 相匹配
  • ?匹配可选空格
  • \d+匹配数字

要在C#中使用它,您可以像这样迭代(或使用Matches

Regex myRegex = new Regex(@"J[./ ]?C ?\d+");
Match matchResult = myRegex.Match(yourString);
while (matchResult.Success) {
    // do something with matchResult.Value
    matchResult = matchResult.NextMatch();
} 

答案 1 :(得分:1)

您可以使用此正则表达式仅捕获JC前面的数字。

J.?C.?(\d{4,5})

DEMO

<强>解释

  • J匹配文字J。
  • .匹配除换行符之外的任何字符。?在点字符作为可选字符之后。
  • C.?匹配C和以下可选字符。
  • (\d{4,5})捕获4到5之间的数字。

答案 2 :(得分:1)

我会使用这个正则表达式:/J\W?C\s?(\d{4,5})/

/
  J\W?C      # J + single non-word character (optional) + C
  \s?        # optional single space
  (\d{4,5})  # 4 or 5 digits
/x

Demo

答案 3 :(得分:0)

如果您只对这些字符串中的数字提取感兴趣,那么您只需使用\ d +:

var regex = new Regex(@"\d+");