背景:创建项目名的时候,需要校验作为excel文件名不允许有的字符
代码:
ts
regTest = '项目名称不可包含以下字符:' + '\\' + ' / : * ? " < > |';
this.validateForm = this.fb.group({
professionalName: ['', [Validators.required, this.validateProjectName.bind(this)]],
description: ['']
});
private validateProjectName(c: FormControl) {
if (!c.value) {
return null;
}
const reg = /[\\\\`|*<>?:".\/;[\]]/im;
return reg.test(c.value) ? { checkIfExistsError: { valid: false } } : null;
}
html:
<form nz-form nzLayout="vertical" [formGroup]="validateForm" (ngSubmit)="submit()">
<nz-form-item>
<nz-form-label>项目名称</nz-form-label>
<nz-form-control [nzErrorTip]="userErrorTpl">
<input nz-input formControlName="professionalName" placeholder="请输入(必填)" nzSize="large" minlength="1" maxlength="32" />
<ng-template #userErrorTpl let-control>
<ng-container *ngIf="control.errors.required">必填项</ng-container>
<ng-container *ngIf="control.errors.checkIfExistsError">{{ regTest }}</ng-container>
</ng-template>
</nz-form-control>
</nz-form-item>
</form>
注意点:
匹配反向斜杠'\'的时候 => 要用四个反斜杠
分析一下“\\\\”,第一个斜杠是转义符,第二个斜杠是斜杠本身,第三个斜杠是转义符,第四个斜杠是斜杠本身。
有2点要清楚:
1.字符串里面表示斜杠就需要两个斜杠如“\\”
2.正则表达式里的斜杠需要转意,是用“\\”标示。
这样就比较好解释:
我们先要表示正则表达式里面的斜杠“\\”,然后再用字符串表示出来。而这2个斜杠分别需要一个转义符,这样就成了4个斜杠在正则表达式里面表示一个斜杠。
将字符串中的两个反斜杠转化为四个 str.replace(/\\/g, '\\\\');
反之 str.replace(/\\\\/g, '\\');
正则的使用
1、匹配除了数字,字母,中文之外的特殊字符
value.match('^[a-zA-Z0-9_\u4e00-\u9fa5]+$')
2、匹配键盘上可见的非数字和字母的符号
var str= /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]/im;
if (str.test(this.value)) {
uni.showToast({
title: '昵称不能包含特殊字符',
icon: 'none',
duration: 1000
});
return false;
}
原文链接:https://blog.csdn.net/quhongqiang/article/details/117122293
正则匹配总结大全: