0
(?!^\*)\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);
4

1 回答 1

2

不完全确定您尝试使用first capture zero-width negative lookahead assertion做什么,但以下正则表达式似乎符合您的要求:

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

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

于 2013-02-18T21:46:16.793 回答