正则表达式实现只允许输入中文、英文、日文、数字、罗马数字、下划线、点符,且不能以下划线开头或结尾

支持中文、字母、数字、日文、特殊字符等字符

data() {
  return{
    rules: {
        activityName: [
          { required: true, message: "请输入活动名称", trigger: "blur" },
          {validator: checkName}
        ],
		}
  };
  let checkName = (rule, value, callback) => {
      let reg = new RegExp("([a-zA-Z0-9\u4e00-\u9fa5]|[\u0800-\u4e00]|[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?])");
      console.log(reg.test(value));
      if (!reg.test(value)) {
         callback(new Error('只允许输入字母、中文、数字、日文、特殊字符等字符,请重新输入'));
      } else {
        if(value.length>20){
          callback(new Error('输入字符数不允许超过20个'));
        }else{
          activityRequestApi.checkOnlineActivityNameIsRepeated({activityName:value,activityId:this.$route.query.activityId}).then(res=>{
            if(res.data){
              callback(new Error('活动名称重复,请重新输入'));
            }else{
              callback();
            }
          })
        }
      }
    };
}

 let reg = new RegExp("^[a-zA-Z0-9\u4e00-\u9fa5\.\u0800-\u4e00]+$");//保证输入的每个字段都会进行判断,只允许输入中文、英文、日文、数字、罗马数字、点符“.”

let reg = new RegExp("^(?!_)(?!.*?_$)(^[a-zA-Z0-9_\u4e00-\u9fa5\.\u0800-\u4e00]+$)");//只允许输入中文、英文、日文、数字、罗马数字、下划线、点符,且不能以下划线开头或结尾


虽然实现了只允许输入中文、英文、日文、数字、罗马数字、下划线、点符,且不能以下划线开头或结尾,但是这里日文字符包括了中文的一些符号“”‘’【】——|、,所以修改成下面的日文全角且不包括符号
日文全角和中文[\u30a1-\u30f6\u3041-\u3093\uFF00-\uFFFF\u4e00-\u9fa5]这个包含了:;两个符号
日文全角不包括中文符号\u30a1-\u30f6\u3041-\u3093\uFF00

let reg = new RegExp("^(?!_)(?!.*?_$)(^[a-zA-Z0-9_ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ\u4e00-\u9fa5\.\u30a1-\u30f6\u3041-\u3093\uFF00]+$)");

正则表达式在线测试网址
http://c.runoob.com/front-end/854
如果没有加上开头^和结尾$符号,正则表达式效果如下,只会匹配到允许出现的字符
在这里插入图片描述

加上$之后,字符串结尾部分只会匹配到想要的字符,但是不想要的字符可以出现在字符串中
在这里插入图片描述
在这里插入图片描述

^和$加上之后的效果,这样字符串的开头结尾都会匹配正则表达式
在这里插入图片描述
在这里插入图片描述

|和()的区别
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值