支持中文、字母、数字、日文、特殊字符等字符
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
如果没有加上开头^和结尾$符号,正则表达式效果如下,只会匹配到允许出现的字符
加上$之后,字符串结尾部分只会匹配到想要的字符,但是不想要的字符可以出现在字符串中
^和$加上之后的效果,这样字符串的开头结尾都会匹配正则表达式