正则表达式重复模式用逗号分隔

 爱的甜蜜日记2010 发布于 2023-02-06 10:15

我有以下正则表达式:

.regex(/^(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{4})$/)

必须正好是4个字符必须包含至少1个数字和1个alpha

虽然我很少做正则表达,但这相对容易.我现在有一个新的要求,我试图实现,但不能正确.

新要求:能够使用与以前相同类型的输入的逗号分隔列表.不能以逗号结尾.每个项目必须符合上述规则(4个字符,至少在数字上,至少一个alpha)

Valid:  123F,U6Y7,OOO8
Invalid:  Q2R4,
Invalid:  Q2R4,1234
Invalid:  Q2R4,ABCD
Invalid:  Q2R4,N6

非常感谢你的帮助!谢谢!

1 个回答
  • 其他一些答案正在重复前瞻断言.这不是必要的.

    这是一个匹配逗号分隔的原子序列的正则表达式,其中每个原子是四个字母数字字符:

    ^[A-Z0-9]{4}(?:,[A-Z0-9]{4})*$
    

    当然,这不是你想要的.你不希望所有原子都是字母的.这是一个负面的先行断言,可以防止在文本中的任何位置匹配这样的原子:

    (?!.*[A-Z]{4})
    

    而且你不希望所有原子都是数字:

    (?!.*[0-9]{4})
    

    把它们放在一起:

    ^(?!.*[A-Z]{4})(?!.*[0-9]{4})[A-Z0-9]{4}(?:,[A-Z0-9]{4})*$
    

    2023-02-06 10:17 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有