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

时间:2017-01-10 08:51:23

标签: c# regex

我有以下正则表达式,但无效:

@"^[a-z]{1}[a-z0-9\-_(%i)]*$"

允许用户使用%i,但仅限于此组合。仅允许%。括号中的表达式不起作用。

用户输入可以是例如:

  • 是testing123%I
  • 是testing123
  • 测试 - %I-123

但这是不允许的:

  • 测试%123

2 个答案:

答案 0 :(得分:3)

字符类仅匹配1个单个字符。如果要将%i作为序列进行匹配,则需要将%i从字符类中删除:

^[a-z](?:[a-z0-9_-]|%i)*$

请参阅regex demo

<强>详情:

  • ^ - 字符串的开头
  • [a-z] - 一个较小的ASCII字母
  • (?:[a-z0-9_-]|%i)* - 零次或多次出现:
    • [a-z0-9_-] - 小写ASCII字母,数字,_-
    • | - 或
    • %i - 文字字符序列%i
  • $ - 字符串结束。

答案 1 :(得分:1)

string pattern = @&#34; \ b(?!(?:。\ B)(。)(?:\ B。) \ 1)[%i] + \ b& #34 ;;

    string input = "testing123%i";
    if (Regex.IsMatch(input, pattern))
    {
        return true;
    }