返回

正则表达式教程: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-+.]+):匹配数据类型和子类型(例如,image/gif)。
  • (?:;[a-z-]+=[a-z0-9-]+)?:匹配可选参数(例如,charset=UTF-8)。
  • (?:;base64)?:匹配可选的“base64”分隔符。
  • ([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?):匹配base64编码数据(非贪婪模式)。
  • \s*$:匹配结尾可选空白字符。
  • i:不区分大小写。

二、使用场景

此正则表达式可用于验证:

  • 验证HTML或CSS中的data URI是否为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 isBase64 = (dataURI) => {
  return regex.test(dataURI);
};
amp;',()*+;=\-._~:@/
?%\s]*?)\s*$/i; const isBase64 = (dataURI) => { return regex.test(dataURI); };

Java

import java.util.regex.Pattern;

public class Base64Validator {

  private static final Pattern 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 PATTERN = Pattern.compile("^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$/i");

  public static boolean isValid(String dataURI) {
    return PATTERN.matcher(dataURI).matches();
  }
}
amp;',()*+;=\-._~:@/?%\s]*?)\s*$/i"
); public static boolean isValid(String dataURI) { return PATTERN.matcher(dataURI).matches(); } }

PHP

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

function isBase64($dataURI) {
  return preg_match($regex, $dataURI) === 1;
}
?>
amp;',()*+;=\-._~:@/?%\s]*?)\s*$/i"
; function isBase64($dataURI) { return preg_match($regex, $dataURI) === 1; } ?>

Python

import re

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

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

def is_base64(dataURI):
  return re.match(regex, dataURI) is not None
amp;',()*+;=\-._~:@/?%\s]
*?)\s*$/i def is_base64(dataURI): return re.match(regex, dataURI) is not None

测试文本

data:image/gif;base64,xxxx==

验证结果: true