【问题标题】:Regex: list of base64 value正则表达式:base64 值列表
【发布时间】:2017-12-18 14:15:15
【问题描述】:

我想在 Javascript 中创建一个允许以下规则的正则表达式:

  • 什么都没有
  • base64 值
  • base64,base64,base64,...(以逗号分隔的未定义的 base64 值数量)

我找到了一个 base64 正则表达式: /^(?:[a-zA-Z0-9+/]{4})*(?:|(?:[a-zA-Z0-9+/]{3}=)|(?:[a -zA-Z0-9+/]{2}==)|(?:[a-zA-Z0-9+/]{1}===))$/

但我不知道如何升级它。

谢谢

【问题讨论】:

  • 如果你得到一个 valid-looking base64 包含无效数据怎么办?只需去验证你得到的 base64...
  • 为什么会有逗号分隔的 base64 值字符串?
  • 简单,在 URL 中:/cmets/EFFRTER3DD==,24RFFRFDEFE=,R4G5566
  • 问题是为什么,而不是如何
  • 因为 .... 他们将在 API 中发送一个 ID 列表(基于 base64 的格式),并且请求使用逗号作为分隔符。这就是为什么

标签: javascript regex list


【解决方案1】:

我认为可以选择使用 base64 正则表达式,将 ^$ 之间的内容包装在非捕获组中,并用可选的逗号重复。

(?!.*,$)^(?:(?:[a-zA-Z0-9+/]{4})*(?:|(?:[a-zA-Z0-9+/]{3}=)|(?:[a-zA-Z0-9+/]{2}==)|(?:[a-zA-Z0-9+/]{1}===)),?)+$

  • 使用否定前瞻断言您的字符串不会以逗号结尾(?!.*,$)
  • 从字符串^的开头
  • 将 base64 正则表达式包装在非捕获组 (?: 中并重复 )+
  • 在第二个非捕获组之后添加可选逗号,?

【讨论】:

    猜你喜欢
    • 2021-06-21
    • 2022-11-21
    • 1970-01-01
    • 2011-10-05
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    相关资源
    最近更新 更多