Regex忽略字符串中的字母数字字符

Regex忽略字符串中的字母数字字符,regex,Regex,我有一个正则表达式,它当前检查memberNo长度在6到9之间的字符串中的成员编号 (?<memberNo>[0-9]{6,9}) 等似乎 (?<memberNo>[0-9a-z]{6,9}) (?[0-9a-z]{6,9}) 将匹配所有目标字符串。但是,此模式允许不带数字字符的字符串 若要强制使用一个或多个数字字符,可以使用 (?<memberNo>(?=.*[0-9])[1-9a-z]{6,9}) (?(?=.[0-9])[1-9a-z]{6,9}

我有一个正则表达式,它当前检查memberNo长度在6到9之间的字符串中的成员编号

(?<memberNo>[0-9]{6,9})

似乎

(?<memberNo>[0-9a-z]{6,9})
(?[0-9a-z]{6,9})
将匹配所有目标字符串。但是,此模式允许不带数字字符的字符串

若要强制使用一个或多个数字字符,可以使用

(?<memberNo>(?=.*[0-9])[1-9a-z]{6,9})
(?(?=.[0-9])[1-9a-z]{6,9})
(?=.[0-9])
部分为正向前瞻

你可以在这里测试这个正则表达式

(?<memberNo>[0-9a-z]{6,9})
(?[0-9a-z]{6,9})
将匹配所有目标字符串。但是,此模式允许不带数字字符的字符串

若要强制使用一个或多个数字字符,可以使用

(?<memberNo>(?=.*[0-9])[1-9a-z]{6,9})
(?(?=.[0-9])[1-9a-z]{6,9})
(?=.[0-9])
部分为正向前瞻


您可以在此处测试此正则表达式

您可以使用

(?(?:[a-zA-Z]?[0-9]){6,9})

细节

  • (?:
    -启动非捕获组:
    • [a-zA-Z]?
      -一个或零个ASCII字母
    • [0-9]
      -单个ASCII数字
  • ){6,9}
    -小组结束时,重复六到九次
见:


您可以使用

(?(?:[a-zA-Z]?[0-9]){6,9})

细节

  • (?:
    -启动非捕获组:
    • [a-zA-Z]?
      -一个或零个ASCII字母
    • [0-9]
      -单个ASCII数字
  • ){6,9}
    -小组结束时,重复六到九次
见:


为什么不先删除所有非数字,然后匹配添加可选的字母匹配模式,
(?(?:[a-zA-Z]?[0-9]){6,9})
(?(?:[a-zA-Z]*[0-9]){6,9})
为什么不先删除所有非数字,然后匹配添加可选的字母匹配模式,
(?(?:[a-zA Z]?[0-9})
(?:[a-zA 6,9})(?(?:[a-zA-Z]*?[0-9]){6,9})是我最终使用的,但这让我非常接近我需要的东西。谢谢(?(((:[a-zA-Z]*?[0-9]){6,9}是我最终使用的东西,但这让我非常接近我需要的东西。谢谢