Regex: match only letters WITH numbers

前端 未结 4 2138
梦谈多话
梦谈多话 2021-02-13 22:02

How can I create a regex expression that will match only letters with numbers?

I\'ve tried something like (?>[A-z]+)([a-z0-9]+).

相关标签:
4条回答
  • 2021-02-13 22:21

    Don't make it be one regex if you don't have to. Use two regexes that both have to match. In Perl, it would be like this

    if ( /[a-zA-Z]/ && /\d/ ) 
    
    0 讨论(0)
  • 2021-02-13 22:23

    (?:\d+[a-z]|[a-z]+\d)[a-z\d]*

    Basically, where 1 and a are any number and any letter, it matches 1a or a1, surrounded by any number of alphanumeric characters.

    edit: shorter and probably faster now

    0 讨论(0)
  • 2021-02-13 22:24

    Other answers are incorrect, and will allow any string that only contains letters, numbers or both. My expression will specifically exclude strings that consist only of letters or only of numbers.

    [A-Za-z0-9]*([a-zA-Z]+[0-9]+|[0-9]+[a-zA-Z]+)
    

    Any number of letters and numbers, followed by at least one letter followed by a number or at least one number followed by a letter.

    There is possibly a simpler way of doing this, however. Mine seems long winded. Maybe it's not. Anyone care to pitch in? :P

    0 讨论(0)
  • 2021-02-13 22:24

    ^([a-Z]+[0-9]+|[0-9]+[a-Z]+)[a-Z0-9]*$

    and a simpler version inspired by TimPietzcker:

    ^([a-Z]+[0-9]|[0-9]+[a-Z])[a-Z0-9]*$

    0 讨论(0)
提交回复
热议问题