我有以下正则表达式,它不起作用:
@"^[a-z]{1}[a-z0-9-_(%i)]*$"
允许用户使用 %i
,但只能在此组合中使用。只允许%
。括号中的表达式不起作用。
例如,用户输入可以是:
- 测试123%i
- 测试123
- 测试-%i-123
但这是不允许的:
- 测试%123
字符类仅匹配 1 个单个字符。如果要将%i
作为序列进行匹配,则需要从字符类中删除%i
:
^[a-z](?:[a-z0-9_-]|%i)*$
查看正则表达式演示
详情:
-
^
- 字符串的开头 -
[a-z]
- 一个较低的 ASCII 字母 -
(?:[a-z0-9_-]|%i)*
- 零次或多次出现:-
[a-z0-9_-]
- 小写 ASCII 字母、数字、_
或-
-
|
- 或 -
%i
- 文字字符序列%i
-
-
$
- 字符串的结尾。
字符串模式 = @"\b(?!(?:.\B)(.)(?:\B.)\1)[%i]+\b";
string input = "testing123%i";
if (Regex.IsMatch(input, pattern))
{
return true;
}