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

Vue中如何检测用户发送消息时标签内是否存在空白内容

Vue 消息标签合规性检测实现

需求说明

检测用户发送消息中的自定义标签是否符合规则,若存在不合规标签则弹出警告。核心规则:

  • 普通标签(如<b>)必须包含非空白内容且有闭合标签<>
  • 链接标签<a>必须同时包含非空白的链接地址和非空白的文本内容

规则示例

  • <b></> => 不合规(内容为空)
  • <b>hello</> => 合规(内容非空)
  • <a >link</> => 不合规(链接地址为空)
  • <a https://www.google.com></> => 不合规(文本内容为空)
  • <a https://www.google.com>link</> => 合规(地址和文本均非空)

基于给定正则的实现代码

在Vue组件中添加以下检测方法:

// 验证标签合规性的核心方法
validateTags(message) {
  const rules = [
    [/&lt;right&gt;([^&lt;]*)(&lt;/&gt;)?/g],
    [/&lt;center&gt;([^&lt;]*)(&lt;/&gt;)?/g],
    [/&lt;left&gt;([^&lt;]*)(&lt;/&gt;)?/g],
    [/&lt;a ([^&gt;]*)&gt;([^&lt;]*)&lt;/&gt;?/g],
    [/&lt;([^&gt;]*)&gt;([^&lt;]*)&lt;/&gt;/g],
  ];

  for (const [regex] of rules) {
    let match;
    // 全局匹配所有符合规则的标签
    while ((match = regex.exec(message)) !== null) {
      // 针对不同标签类型做验证
      if (regex.source.includes('&lt;a')) {
        // 链接标签:地址和文本都不能全空白
        const url = match[1]?.trim();
        const text = match[2]?.trim();
        if (!url || !text) return false;
      } else if (/&lt;(right|center|left)&gt;/.test(regex.source)) {
        // 对齐标签:必须有闭合标签且内容非空白
        const content = match[1]?.trim();
        const hasClosing = match[2];
        if (!hasClosing || !content) return false;
      } else {
        // 普通标签:内容不能全空白
        const content = match[2]?.trim();
        if (!content) return false;
      }
    }
  }
  return true;
}

调用方式

在用户发送消息时调用检测方法,不合规则弹出警告:

sendMessage() {
  const userInput = this.messageContent;
  if (!this.validateTags(userInput)) {
    alert('标签格式错误,请检查输入的标签内容!');
    return;
  }
  // 执行消息发送逻辑
  // ...
}

说明

  • 该方法会遍历所有给定正则,全局匹配消息中的所有标签
  • 每个标签都会根据类型验证必填内容是否为非空白值
  • 只要发现一个不合规标签,立即返回false终止检测

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:20:27