返回

正则表达式教程:检验base64编码格式

正则表达式

一、正则解释

给定的正则表达式:

/^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!
/^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$/i
amp;
',()*+;=\-._~:@/?%\s]*?)\s*$/i

关键部分解释:

  • ^\s*:开头必须匹配任意数量的空白字符。
  • data::匹配"data:"字符串。
  • (?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?:匹配数据类型和子类型,后面可能跟随可选的参数。
  • (?:;base64)?:匹配可选的;base64指示符。
  • (,:开始捕获组,用于捕获base64编码的数据。
  • ([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?):匹配base64编码的数据,允许特殊字符。
  • \s*:结尾处匹配任意数量的空白字符。
  • $:结尾锚点,确保字符串的结尾。
  • i:忽略大小写。

二、使用场景

此正则表达式可用于验证base64编码数据是否符合正确的格式。常见的应用场景包括:

  • 验证从HTML或CSS中提取的base64编码图片。
  • 确保从文件或API中接收的base64编码数据有效。
  • 过滤和处理包含base64编码数据的文本。

三、代码示例

JavaScript

const regex = /^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!
const regex = /^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$/i;

const isValidBase64 = (str) => regex.test(str);
amp;',()*+;=\-._~:@/?%\s]*?)\s*$/i;
const isValidBase64 = (str) => regex.test(str);

Java

import java.util.regex.Pattern;

public class Base64Validator {

    private static final Pattern BASE64_PATTERN = Pattern.compile("^\\s*data:(?:[a-z]+/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!
import java.util.regex.Pattern;

public class Base64Validator {

    private static final Pattern BASE64_PATTERN = Pattern.compile("^\\s*data:(?:[a-z]+/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=-._~:@/?%\\s]*?)\\s*$", Pattern.CASE_INSENSITIVE);

    public static boolean isValidBase64(String str) {
        return BASE64_PATTERN.matcher(str).matches();
    }
}
amp;',()*+;=-._~:@/?%\\s]*?)\\s*
import java.util.regex.Pattern;

public class Base64Validator {

    private static final Pattern BASE64_PATTERN = Pattern.compile("^\\s*data:(?:[a-z]+/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=-._~:@/?%\\s]*?)\\s*$", Pattern.CASE_INSENSITIVE);

    public static boolean isValidBase64(String str) {
        return BASE64_PATTERN.matcher(str).matches();
    }
}
quot;
, Pattern.CASE_INSENSITIVE); public static boolean isValidBase64(String str) { return BASE64_PATTERN.matcher(str).matches(); } }

PHP

<?php

$pattern = '/^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!
<?php

$pattern = '/^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$/i';

function isValidBase64($str) {
    return preg_match($pattern, $str) === 1;
}
amp;'
,()*+;=\-._~:@/?%\s]*?)\s*$/i'; function isValidBase64($str) { return preg_match($pattern, $str) === 1; }

Python

import re

pattern = r"^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!
import re

pattern = r"^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$"

def is_valid_base64(str):
    return bool(re.match(pattern, str))
amp;',()*+;=\-._~:@/?%\s]*?)\s*
import re

pattern = r"^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$"

def is_valid_base64(str):
    return bool(re.match(pattern, str))
quot;
def is_valid_base64(str): return bool(re.match(pattern, str))