2019-04-01 18:48 阅读 230


I need a regex for preg_match to accept all alphanumeric characters except l, L, v, V, 0, 2.

I've tried


It works good excluding lLvV02 but it also accept other characters like SPACE,ù,@,#, etc...

How should I change it?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    duanfeng3879 duanfeng3879 2019-04-01 18:52

    You may use



    • ^ - start of string
    • (?: - start of a non-capturing group
      • (?![lLvV02])[a-zA-Z0-9] - an alnum char that is not one of the chars inside the character class residing inside a negative lookahead
    • )* - end of the non-capturing group, 0 or more repetitions
    • $ - end of string

    See the Regulex graph:

    enter image description here

    点赞 评论 复制链接分享
  • doujing5150 doujing5150 2019-04-01 19:04

    I know you asked for a Regex, but you can test for alphanumeric first and only if that passes check that the others are NOT present:

    if(ctype_alnum($string) && !preg_match('/[lLvV02]/', $string)) {
    } else {

    Or possibly substitute preg_match('/^[^lLvV02]+$/', $string).

    点赞 评论 复制链接分享
  • duanmo5724 duanmo5724 2019-04-01 19:16

    Easiest would probably be: ^[a-km-uw-zA-KM-UW-Z13-9]*$. I'm not saying that it's pretty but it does what it's supposed to.

    点赞 评论 复制链接分享