带有标题的Regex Base64映像
我有时会遇到base64图像转换不正确的问题。在转换之前,我需要一种方法来测试图像是否为正确的base64格式,以便我可以尝试进一步研究这个问题。我在网上找到了一些正则表达式,但我认为它们只需要没有标题的字符串。我有带标题的字符串。我试图添加标题,但它不断中断 原件:带有标题的Regex Base64映像,regex,coldfusion,Regex,Coldfusion,我有时会遇到base64图像转换不正确的问题。在转换之前,我需要一种方法来测试图像是否为正确的base64格式,以便我可以尝试进一步研究这个问题。我在网上找到了一些正则表达式,但我认为它们只需要没有标题的字符串。我有带标题的字符串。我试图添加标题,但它不断中断 原件: ^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$ 我添加了标题,但不起作用: ^([data:image/png;base6
^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$
我添加了标题,但不起作用:
^([data:image/png;base64,][A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$
谢谢您可能会注意到原始正则表达式中使用了
[方括号]
,这些创建的字符集与so[数据:image/png;base64,]
中的任何字符都匹配d,a,t,a,…,6,4,
,
。相反,您可能希望创建一个非捕获组,因为我认为您正在尝试将标题设置为可选的,例如(?:data:image/png;base64,)?
但是,如果您需要标题,可以同时删除非捕获组和?
量词
^(data:image/png;base64,[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$
您可能会注意到在原始正则表达式中使用了
[方括号]
,这些创建的字符集与so[数据:image/png;base64,]
中的任何字符都匹配d,a,t,a,…,6,4,
,
。相反,您可能希望创建一个非捕获组,因为我认为您正在尝试将标题设置为可选的,例如(?:data:image/png;base64,)?
但是,如果您需要标题,可以同时删除非捕获组和?
量词
^(data:image/png;base64,[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$
正则表达式
^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$
所有这些字符是什么意思:
^
。。。查找从行或字符串缓冲区开头开始的字符串
(
…)
。。。定义一个标记组,用于反向引用括号内表达式找到的字符串,或用于应用此处使用的乘数。仅为应用乘数而对表达式进行分组通常比使用非标记组更好,即使用(?:
…)
,其中,在左括号后面加上问号和冒号,使该组成为非标记组
[
..]
。。。定义一个正字符类,这意味着方括号内的任何字符都应找到一次,以进行正匹配[^
..]
将是一个负字符类定义,这意味着除方括号中的一个字符外,应找到任何字符
[A-Za-z0-9+/]
。。。ASCII表中的大写或小写字母、数字、加号或斜杠字符
{4}
。。。是一个乘数,表示前一个表达式或字符正好四次
*
。。。也是一个乘数,表示上一个表达式或字符0次或多次
|
。。。表示或
$
。。。表示没有匹配的行终止符或字符串缓冲区的行结束
所以这个表达式的意思是:
- 也是由4个字母、数字、加号或斜杠字符组成的字符串
- 或仅由3个字母、数字、加号或斜杠和等号(第四个字符)组成的字符串
- 或仅由两个字母、数字、加号或斜杠以及两个等号(作为第三个和第四个字符)组成的字符串
^(?:data:image/png;base64,)?(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$
非标记组(?:data:image/png;base64,)
后面的问号在这里表示前面的表达式(只是一个固定字符串)零次或一次
如您所见,我还通过在左括号后插入?:
将2个标记组更改为2个非标记组。正则表达式
^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$
所有这些字符是什么意思:
^
。。。查找从行或字符串缓冲区开头开始的字符串
(
…)
。。。定义一个标记组,用于反向引用括号内表达式找到的字符串,或用于应用此处使用的乘数。仅为应用乘数而对表达式进行分组通常比使用非标记组更好,即使用(?:
…)
,其中,在左括号后面加上问号和冒号,使该组成为非标记组
[
..]
。。。定义一个正字符类,这意味着方括号内的任何字符都应找到一次,以进行正匹配[^
..]
将是一个负字符类定义,这意味着除方括号中的一个字符外,应找到任何字符
[A-Za-z0-9+/]
。。。ASCII表中的大写或小写字母、数字、加号或斜杠字符
{4}
。。。是一个乘数,表示前一个表达式或字符正好四次
*
。。。也是一个乘数,表示上一个表达式或字符0次或多次
|
。。。表示或
$
。。。表示没有匹配的行终止符或字符串缓冲区的行结束
所以这个表达式的意思是: