正则表达式模式 - 字母数字

时间:2011-04-04 16:02:52

标签: c# .net regex

[username]其中username是任何字符串,仅包含1到12个字符长的字母数字字符

我的代码:

Regex pat = new Regex(@"\[[a-zA-Z0-9_]{1,12}\]");
MatchCollection matches = pat.Matches(accountFileData);
foreach (Match m in matches)
{
    string username = m.Value.Replace("[", "").Replace("]", "");
    MessageBox.Show(username);
}

给我一​​个空白的比赛

4 个答案:

答案 0 :(得分:4)

这会在括号内显示一个名称(匹配不包含方括号):

(?<=\[)[A-Za-z0-9]{1,12}(?=\])

您可以像以下一样使用它:

Regex pat = new Regex(@"(?<=\[)[A-Za-z0-9]{1,12}(?=\])");
MatchCollection matches = pat.Matches(accountFileData);
foreach (Match m in matches)
{
    MessageBox.Show(m.Value);
}

答案 1 :(得分:2)

您的括号太多,您可能希望匹配字符串的开头(^)和结尾($)。

^[a-zA-Z0-9]{1,12}$

如果您希望匹配的字符串中有方括号,请使用反斜杠转义它们。

\[[a-zA-Z0-9]{1,12}\]

// In C#
new Regex(@"\[[a-zA-Z0-9]{1,12}\]")

答案 2 :(得分:1)

你的括号太多了。

[a-zA-Z0-9]{1, 12}

答案 3 :(得分:0)

如果您尝试匹配括号,则需要正确转义:

\[[a-zA-Z0-9]{1, 12}\]