返回
正则表达式教程:检验base64编码格式
正则表达式
2024-02-28 15:55:55
一、正则解释
给定的正则表达式:
/^\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))