【问题标题】:what is the regex for first character is a letter?什么是第一个字符的正则表达式是一个字母?
【发布时间】:2014-08-12 00:56:08
【问题描述】:

什么是正则表达式,这样第一个字符总是一个字母,其余的可以是字母或数字,或者什么都不是?

我有这个,当你输入至少两个字符时它可以工作,但是当你只输入一个字母而不输入其他字符时它就不起作用了。

/^[A-z][A-z0-9]+$/

我需要修改什么才能只允许一个字母? 谢谢

【问题讨论】:

    标签: regex


    【解决方案1】:

    您的正则表达式不正确:

    /^[A-z][A-z0-9]+$/
    

    你需要使用:

    /^[A-Za-z][A-Za-z0-9]*$/
    

    [A-z] 的范围由非字母字符组成,还包括 []^ 等(基本上是 91-96 ASCII 码之间的任何字符)。

    最好将量词 + 更改为 *,因为您的输入只能包含单个字符。

    【讨论】:

      【解决方案2】:

      您的正则表达式需要两个字符(顺便说一句,与字母不同),因为您正在寻找一个是字母的字符,以及至少一个 (+) 字母或数字。

      为了更好地获取以字母开头的字符串,然后是您需要的任何其他字符:

      ^[A-Za-z].*$
      

      ^ 表示行首

      [A-Za-z] 只获取字母,大写或小写

      .* 可以得到任何字符,0 次或更多次

      $ 表示字符串的结尾

      【讨论】:

        【解决方案3】:

        + 修饰符替换为*(将含义从“1 或更多”更改为“0 或更多”)。

        【讨论】:

          【解决方案4】:

          将您的正则表达式更改为:

          /^[A-Za-z][A-Za-z0-9]*$/
          ---------------------^
          

          确保将+ 更改为*,使其匹配0 或更多。

          【讨论】:

            【解决方案5】:

            可以这样实现

             # ^(?i)[a-z][a-z0-9]*$
            
             ^           # BOS
             (?i)        # Ignore case
             [a-z]       # a-z case insensitive
             [a-z0-9]*   # Same as [^\W_]
             $           # EOS
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2022-01-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-11-18
              • 1970-01-01
              • 2014-08-20
              相关资源
              最近更新 更多