代码之家  ›  专栏  ›  技术社区  ›  Amit

如何为以下条件创建regex?

  •  2
  • Amit  · 技术社区  · 14 年前

    我正在创建一个regex来满足以下条件

    一个字符串可以包含任何字母、数字和“and”? 字符串应以字母或数字开头

    对于EX:

    adsfj
    asfj's
    jfkd'sdf?
    df
    ds?
    afjdk?
    

    都有效

    我用C 2

    我试过这样的东西

      ^[a-zA-Z0-9]+[']\*[a-zA-Z0-9]\*[?]\*[a-zA-Z0-9]\*$
    

    没有解决问题……知道吗….

    3 回复  |  直到 14 年前
        1
  •  5
  •   Max Shawabkeh    14 年前

    比你做的简单: ^[a-zA-Z\d][a-zA-Z\d'?]*$

    ^            # Start of string anchor.
    [a-zA-Z\d]   # First character is a letter or a digit.
    [a-zA-Z\d'?] # Subsequent characters are letters, digits, apostrophes or question marks...
    *            # ...repeated any number of times.
    $            # Until the end of the string.
    

    如果允许下划线与其他字符一起使用,则可以将其简化为: ^\w[\w'?]*$

        2
  •  1
  •   Huppie    14 年前

    怎么样:

    Regex rx = new Regex(@"^[a-z\d][a-z\d'?]*$", RegexOptions.IgnoreCase);
    

    正如您所说: 开头:字母表中的任何字母或数字。 直到最后,它可以包含:字母表中的任何字母、数字或?字符。

        3
  •  0
  •   Amarghosh    14 年前
    ^[a-zA-Z0-9][a-zA-Z0-9?']*$
    

    这甚至允许长度为1的字符串。要指定最小和最大长度,请将regex更改为:

    ^[a-zA-Z0-9][a-zA-Z0-9?']{minlen-1,maxlen - 1}$
    

    例如,下面允许长度为5到10的字符串。

    ^[a-zA-Z0-9][a-zA-Z0-9?']{4,9}$