1,main.js配置注册自定义指令
2,在自定义指令中编写逻辑,具体业务场景分情况如下:
- 只允许输入英文字母和数字
app.directive('input-english', {
mounted(el) {
el.addEventListener('input', (event: InputEvent) => {
const regex = /^[a-zA-Z]*$/; // 正则表达式,只允许输入英文字符
const value = (event.target as HTMLInputElement).value;
if (!regex.test(value)) {
// // 如果输入不符合要求,设置输入框的值为纯英文字符
(event.target as HTMLInputElement).value = value.replace(/[^a-zA-Z]/g, '');
}
});
},
});
- 不允许输入中文字符和汉字
/app.directive('input-english', {
mounted(el) {
el.addEventListener('input', (event: InputEvent) => {
const value = (event.target as HTMLInputElement).value;
const englishOnlyValue = value.replace(/[\u4E00-\u9FFF\u3000-\u303F\uFF00-\uFFEF]/g, '');
if (value !== englishOnlyValue) {
(event.target as HTMLInputElement).value = englishOnlyValue;
}
});
},
});
在正则表达式/[\u4E00-\u9FFF\u3000-\u303F\uFF00-\uFFEF]/g中,我们添加了\u3000-\u303F和\uFF00-\uFFEF来包含常见的中文符号范围。这样,这些中文符号也将被替换为空字符串。
- 只允许输入英文字母+符号+数字
app.directive('input-english', {
mounted(el) {
el.addEventListener('input', (event: InputEvent) => {
const value = (event.target as HTMLInputElement).value;
const englishOnlyValue = value.replace(/[^\x00-\x7F]/g, '');
if (value !== englishOnlyValue) {
(event.target as HTMLInputElement).value = englishOnlyValue;
}
});
},
});
使用了正则表达式/[^\x00-\x7F]/g来匹配非英文字符。\x00-\x7F表示ASCII字符范围,包括了英文字母、数字、标点符号和英文输入法下的各种符号。
通过将匹配到的非英文字符替换为空字符串,我们可以实现只允许输入英文字符、空格和英文输入法下的各种符号的效果。