这个正则表达式我做错了什么?

时间:2013-02-18 21:41:23

标签: c# regex

(?!^\*)\w{1,20}

我正在尝试确保输入长度在1到20个字符之间,而不是以“*”开头。但是,允许在阳光下任何其他角色。

该表达式在c#中不起作用,但似乎可以使用此测试程序:http://www.regexplanet.com/advanced/java/index.html

我需要改变什么?

感谢您对此有任何见解。

编辑: 根据要求,这是c#代码:

System.Text.RegularExpressions.Regex TempRegex = new System.Text.RegularExpressions.Regex(@"(?!^\*)\w{1,20}");
return TempRegex.IsMatch(_inputString);

1 个答案:

答案 0 :(得分:2)

不完全确定您尝试使用首先捕获 zero-width negative lookahead assertion,但遵循正则表达似乎符合您的要求:

@"^[^\*]\w{0,19}$"

"^...$"部分强制匹配整个字符串。第一个字符"[^\*]"(星号以外的任何字符)已经计入[1-20]限制,因此范围为{0,19}。