正则表达式包含两个特定字符



我有以下正则表达式,它不起作用:

@"^[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;
    }

相关内容

最新更新