javascript正则表达配置扩展名并实现验证

项目需求:

  • 1.通过下拉菜单,可配置包含或者不包含某个字符串的文件名,字符串支持输入;必须以.xml为结尾
  • 2.可动态添加、删除配置行;
  • 3.点击【开始生成】按钮,根据配置的扩展名生成相应正则表达式;
  • 4.输入需要测试的文件名,进行正则验证;
  • 5.点击【确定】按钮,将配置的正则表达式提交至后台;

如下图:

最初需求还有一个“并且/或者”的下拉菜单选项,其中“或者”不好实现,和产品沟通后只保留了“并且”,有思路的朋友欢迎留言,一起探讨。

实现思路:

1.首先实现配置内容,点击【增加】按钮添加一行表单,点击【删除】按钮删除当前行;定义一个空数组regArray,每一行表单为一个对象:regArray: [{}],添加时regArray.push({}),删除时regArray.splice(index, 1)

模板(template):

<el-row v-for="(item, index) in regInfo.regArray" :key="index">
  <el-form>
    <el-form-item>
      <!-- 包含/不包含 -->
      <el-select  v-model="regInfo.regArray[index].include" placeholder="请选择">
        <el-option v-for="item in include" :key="item.id" :label="item.label" :value="item.value">
        </el-option>
      </el-select>
      <!-- 下拉选项,filterable allow-create default-first-option为可输入属性 -->
      <el-select v-model="regInfo.regArray[index].type" placeholder="请选择" filterable allow-create default-first-option>
        <el-option v-for="item in type" :key="item.id" :label="item.label" :value="item.value">
       </el-option>
      </el-select>
      <el-button type="text" @click="delReg(index)" v-if="index > 0">删除</el-button>
    </el-form-item>
  </el-form>
</el-row>
<button class="addBtn" @click="addReg()">添加</button>

script:

data() {
  return {
    regInfo: { regArray: [{}] }, // 配置内容表单
      include: [
        { id: "0", label: "包含", value: "include" },
        { id: "1", label: "不包含", value: "exclusive" },
      ],
      type: [
        { id: "0", label: ".meta", value: ".meta" },
        { id: "1", label: ".mqcs", value: ".mqcs" },
      ],
    };
}

methods: {
    // 增加一行表单
    addReg() {
      // 定义lastIndex为最后一行索引
      let lastIndex = this.regInfo.regArray.length - 1;
      // 必须输入当前行才能添加下一行
      if (
        isEmpty(this.regInfo.regArray[lastIndex].include) ||
        isEmpty(this.regInfo.regArray[lastIndex].type)
      ) {
        this.$message.error("请配置当前行后再进行添加");
      } else {
        this.regInfo.regArray.push({}); //添加一行表单
      }
    },
    // 删除一行表单
    delReg(index) {
      this.regInfo.regArray.splice(index, 1);
    },
}
  • 2.点击【开始生成】按钮生成相应正则表达式,正则规则需要按照不包含+包含的顺序进行组合,将表单大数组循环,拆成不包含、包含两个小数组,分别拿到值再进行拼接;如果表单为空,则直接生成验证.xml为后缀的表达式

template:

<el-form ref="regForm" :model="regForm">
  <el-form-item>
    <el-input v-model="regForm.reg" disabled></el-input>
  </el-form-item>
</el-form>
<el-button @click="createReg()">开始生成</el-button>

script:

data() {
  return {
    regForm: { 
      reg: "", // 生成的表达式
    },
}

methods: {
  // 生成表达式
  createReg() {
    //拿到大数组,循环,将包含与不包含分成两个数组进行重组
    let arr1 = []; //不包含的数组
    let arr2 = []; //包含的数组
    this.regInfo.regArray.forEach((item) => {
      if (item.include == "exclusive") { // 如果是不包含的
        arr1.push(item);
      } else if (item.include == "include") { // 如果是包含的
        arr2.push(item);
      }
    });
    // 如果第一行为空 直接生成.xml后缀的表达式
    if (isEmpty(this.regInfo.regArray[0].include) || isEmpty(this.regInfo.regArray[0].type)) {
      this.regForm.reg = `.*.xml$`;
    } else {
      let regTxt1 = "";
      let regTxt2 = "";
      // 处理不包含的数组
      arr1.forEach((item, index) => {
        regTxt1 += `(?<!${item.type})`;
      });
      // 2.处理包含的数组
      arr2.forEach((item, index) => {
        regTxt2 += `(${item.type})`;
      });
      this.regForm.reg = ".*" + regTxt1 + regTxt2 + "(.xml)$"; // 进行拼接
    }
  }
}
  • 3.输入想要验证的文件名,点击【开始验证】,验证是否通过

template:

<el-form ref="validationForm" :model="validationForm">
  <el-form-item>
    <el-input v-model="validationForm.reg"></el-input>
  </el-form-item>
</el-form>
<el-button @click="validationReg()">开始验证</el-button>
<div>
  <el-tag type="success" v-if="isReg == 1">验证通过</el-tag>
  <el-tag type="danger" v-else-if="isReg == 2">验证失败</el-tag>
</div>

data() {
  return {
    validationForm: {
      reg: "", // 输入需要验证的文件名
    },
    isReg: 0, //验证后显示相应提示 1验证通过 2验证失败
}
methods: {
  // 验证表达式
  validationReg() {
    // this.regForm.reg // 生成的正则表达式
    // this.validationForm.reg // 需要进行验证的文件名
    if (isEmpty(this.regForm.reg)) {
      this.$message.error("请生成正则表达式");
    } else if (isEmpty(this.validationForm.reg)) {
      this.$message.error("请输入需要验证的正则表达式");
    } else {
      var reg = new RegExp(this.regForm.reg.replace(".", "\\.")); // 对.进行转义
      if (reg.test(this.validationForm.reg)) {
        this.isReg = 1; // 验证成功
      } else {
        this.isReg = 2; // 验证失败
      }
    }
  },
}
  • 4.点击【确定】按钮,将正则表达式提交至后台

template:

<div slot="footer">
  <el-button @click="cancel()">取消</el-button>
  <el-button @click="submit()">确定</el-button>
</div>

script:

// 保存提交
submit() {
  this.$ajax.post(接口地址, this.regForm.reg).then((res) => {
    if (res.data.code == 200) {
      this.$message.success("添加成功");
    }}).catch((err) => {console.log(err)});
},

isEmpty为封装的判断字符串是否为空的方法

export const isEmpty = (obj) => {
  if(typeof obj == "undefined" || obj == null || obj == ""){
    return true;
  }else{
    return false;
  }
}

到此这篇关于javascript正则表达配置扩展名并实现验证的文章就介绍到这了,更多相关javascript配置扩展名内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JavaScript 正则表达式详解

    目录 1. 正则表达式创建 2. 使用模式 2.1 使用简单模式 2.2 使用特殊字符 3. 应用 3.1 切分字符串 3.2 分组 3.3 贪婪匹配 3.4 正则表达式标志 3.5 test() 方法 4. 常用正则(参考) 总结 1. 正则表达式创建 JavaScript 有两种方式创建正则表达式: 第一种:直接通过/正则表达式/写出来 第二种:通过new RegExp('正则表达式')创建一个RegExp对象 const re1 = /ABC\-001/; const re2 = new

  • JavaScript验证图片类型(扩展名)的函数分享

    前台调用如下 复制代码 代码如下: OnClientClick="return fucCheckJpgAndGif(form1.File1.value);" --其中File1为上传文件控件 函数代码: 复制代码 代码如下: function fucCheckJpgAndGif(strFileName) {    if (strFileName != "") {        var strtype = strFileName.substring(strFileNa

  • jmeter实现接口关联的两种方式(正则表达式提取器和json提取器)

    目录 一.前言 二.使用正则表达式提取器实现接口关联 三.使用json提取器实现接口关联 json提取器的使用步骤 四.扩展:返回复杂json数据的提取 一.前言 在开展接口测试或者是接口面试的过程中,我们会发现很多接口需要依赖前面的接口,需要我们动态从前面的接口返回中提取数据,也就是我们通常说的关联. 关联通俗来讲就是把上一次请求的返回内容中的部分截取出来保存为参数,用来传递给下一个请求使用. 二.使用正则表达式提取器实现接口关联 正则表达式提取器,见名知意就是使用正则表达式的方法把我们需要提

  • 深入了解JavaScript中正则表达式的使用

    目录 一.什么是正则表达式 1.正则表达式特点 2.正则表达式的使用 二.正则表达式中的特殊字符 1.正则表达式的组成 2.边界符 3.字符类 4. 量词符 5.括号总结 6.预定义类 三.String类中的方法 1.match()方法 2.search()方法 3.split()方法 4.replace()方法 一.什么是正则表达式 是用于匹配字符串中字符组合的模式.在 JavaScript中,正则表达式也是对象. 正则表通常被用来检索.替换那些符合某个模式(规则)的文本,例如验证表单:用户名

  • 详解JavaScript高级正则表达式

    目录 JavaScript高级正则表达式 1.正则表达式概述 1.2 正则表达式的特点 2.正则表达式在js中的使用 2.1正则表达式的创建 2.2测试正则表达式 3.正则表达式中的特殊字符 3.1正则表达式的组成 3.2边界符 3.3字符类 3.4预定义类 3.5正则替换replace 4.面试题 一.如何让事件先冒泡后捕获 二.说一下事件代理 (1)了解事件代理吗,这样做有什么好处 (2)事件委托以及冒泡原理: (3)事件代理在捕获阶段的实际应用: 总结 JavaScript高级正则表达式

  • js实现浏览本地文件并显示扩展名的方法

    本文实例讲述了js实现浏览本地文件并显示扩展名的方法.分享给大家供大家参考.具体如下: 这里用文件域浏览指定文件,可以显示该文件的扩展名,想想它可以用在哪里?可以用在文件上传系统上,用来判断上传的文件类型是否是合法类型,不是则不允许上传.再看看代码,不足10行,解决问题,正在学习javaScript的朋友,你也可参考参考哦. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-view-nav-file-ext-codes/ 具体代码如下: <

  • javascript正则表达配置扩展名并实现验证

    项目需求: 1.通过下拉菜单,可配置包含或者不包含某个字符串的文件名,字符串支持输入:必须以.xml为结尾 2.可动态添加.删除配置行: 3.点击[开始生成]按钮,根据配置的扩展名生成相应正则表达式: 4.输入需要测试的文件名,进行正则验证: 5.点击[确定]按钮,将配置的正则表达式提交至后台: 如下图: 最初需求还有一个“并且/或者”的下拉菜单选项,其中“或者”不好实现,和产品沟通后只保留了“并且”,有思路的朋友欢迎留言,一起探讨. 实现思路: 1.首先实现配置内容,点击[增加]按钮添加一行表

  • java获取文件扩展名的方法小结【正则与字符串截取】

    本文实例讲述了java获取文件扩展名的方法.分享给大家供大家参考,具体如下: 问题描述:  有一个String类型:String imageName = "zy.jpg"; 请问我如何截取"."后面的后辍名. 解决方法一:使用正则表达式 package csdnTest; import java.util.regex.*; public class CSDNTest { public static void main(String[] ss) { String s=

  • FileUpload使用Javascript检查扩展名是否有效实现思路

    通用的检查方法.首先定义好有效的文件扩展名,存放在阵列中. 在JavaScript获取FileUpload控件的文件路径,并取得路径中的文件扩展名.再与阵列中的扩展名比较,如果存在,说明上传的文件是有效的,反之无效. 复制代码 代码如下: <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="btnUpload" runat="server

  • 分享20个常用的正则表达

    正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var r = fieldValue.match(reg); if(r==null)alert('Date

  • ASP.NET 运行时错误: 没有为扩展名“.asax”注册的生成提供程序修正版

    请确保所注册的提供程序具有包含值"Web"或"All"的BuildProviderAppliesToAttribute 属性. 解决方法: 一.web.config 中 修改 <compilation debug="true"> <buildProviders> <add extension=".asax" type="System.Web.Compilation.PageBuildPr

  • PHP获取文件扩展名的方法实例总结

    本文实例总结了PHP获取文件扩展名的方法.分享给大家供大家参考,具体如下: 在PHP面试中或者考试中会有很大几率碰到写出五种获取文件扩展名的方法,下面是我自己总结的一些方法 $file = '需要进行获取扩展名的文件.php'; //第一种,根据.拆分,获取最后一个元素的值 function getExt1{ return end(explode(".",$file);) } //第二种,获取最后一个点的位置,截取 function getExt2{ return substr($fi

  • 后缀就扩展名为js的文件是什么文件 原创

    好多朋友刚开始接触网络,不懂后缀为js的文件,是什么文件,其实这个扩展名为.js的文件就是javascript文件,为什么要用<script src="test.js"></script>的格式来调用文件呢,其实我们经常在做网页过程中,因为js文件如果写到网页中,不利于我们的反复修改,如果以后我们需要修改js文件的话,就可以直接改js文件,不需要改整个网页,现在大家的网站都是生成静态的html,如果要修改成千上万的个静态页面,不论是替换还是从节约网站空间,都是不

  • 让IIS支持任意扩展名和未知扩展名的下载(下载站设置)

    如果下载空间里面有asp,php文件不建议这样设置,如果这样设置了又不想让asp,php文件被别人下载可以使用. 第一步: 取消网站执行权限 2.为防止asp,php文件被下载,没有就不需要设置 让IIS支持任意扩展名和未知扩展名的下载 1. 打开 IIS Microsoft 管理控制台 (MMC),右键单击本地计算机名称,然后单击"属性". 2. 单击"MIME 类型". 3. 单击"新建". 4. 在"扩展名"框中,键入星

  • 另类扩展名同样执行ASP

    如想实现 http://www.knowsky.com/hello.zw  同样用ASP的语法来执行,我们还需要一些额外的工作. 为了让对后缀名为.zw的文件的请求能够被我们的Handler截获运行 打开IIS的管理控制台,又键单击站点,选择"属性",跳出站点的属性对话框.选择主目录选项,配置. 添加映射>>可执行文件里可以复制.asp里的C:\WINDOWS\system32\inetsrv\asp.dll路径. 扩展名为.zw 之后重启IIS,就可以以这种扩展名访问了.

随机推荐