You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript与正则表达式验证DNA FASTA序列格式

FASTA序列格式验证实现方案

现有代码问题分析

你当前使用的正则表达式/>+.*[a-z]+\n[AGCT]/igm存在3个关键缺陷:

  • 错误强制要求标题行包含小写字母([a-z]+),违反规则中"标题后可跟任意字符"的要求
  • 仅检查序列的第一个字符,未覆盖多行序列的全部内容
  • 使用e.preventDefault()会干扰正常输入操作,无法实现"显示错误提示"的需求

验证规则拆解

需严格匹配两条核心规则:

  1. 每条序列必须以>开头的标题行起始,标题行内容为>后到换行前的任意字符
  2. 标题行后的所有序列内容,仅允许包含A、G、T、C(兼容大小写),禁止其他字符(空格、数字、特殊字符等)

完整实现代码

// 绑定input事件(覆盖所有输入场景:输入、粘贴、删除等)
$("#fasta_text").on('input', function() {
    const fastaContent = $(this).val().trim();
    const errorBox = $("#fasta_error"); // 页面需提前准备错误提示元素
    let isValid = true;
    let errorMsg = "";

    // 空内容不触发验证(可根据需求调整)
    if (!fastaContent) {
        errorBox.hide();
        return;
    }

    // 按空行分割多个序列块,过滤空块
    const sequenceBlocks = fastaContent.split(/\n\s*\n/).filter(block => block.trim());

    // 逐个验证每个序列块
    for (const block of sequenceBlocks) {
        const lines = block.split('\n').filter(line => line.trim());
        
        // 检查标题行是否合法
        if (!lines[0] || !lines[0].startsWith('>')) {
            isValid = false;
            errorMsg = "所有序列必须以'>'开头的标题行起始";
            break;
        }

        // 检查序列内容行
        const sequenceLines = lines.slice(1);
        for (const line of sequenceLines) {
            // 严格匹配仅允许的碱基字符(大小写兼容)
            if (!/^[AGCTagct]+$/.test(line.trim())) {
                isValid = false;
                errorMsg = `序列行包含非法字符:${line.trim()},仅允许A/G/T/C(大小写)`;
                break;
            }
        }
        if (!isValid) break;
    }

    // 控制错误提示显示/隐藏
    isValid ? errorBox.hide() : errorBox.text(errorMsg).show();
});

配套HTML示例

<textarea id="fasta_text" rows="12" cols="80" placeholder="请输入FASTA格式序列"></textarea>
<div id="fasta_error" style="color: #dc2626; margin-top: 8px; display: none;"></div>

代码说明

  • 用input事件替代零散的change/keyup/paste,全面捕获所有输入变化
  • 按空行分割多序列块,实现多序列的批量验证
  • 标题行仅检查起始符>,完全符合规则要求
  • 序列行使用严格正则匹配,确保无非法字符
  • 采用"错误提示"而非"阻止输入"的逻辑,兼顾验证准确性和用户编辑体验

内容的提问来源于stack exchange,提问作者Azeen Riyaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:40:28