You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular Validation校验:输入仅支持拉丁/格鲁吉亚字符 不可混合且无其他字符

Angular 表单纯拉丁/格鲁吉亚字符校验实现方案

原代码错误原因

你编写的逻辑直接对正则字符串做布尔运算,没有将正则规则作用到输入的表单值上做匹配判断:非空字符串在JS逻辑判断中会默认返回true,因此你写的逻辑永远返回真,完全不会生效。

正确实现方案

1. 编写自定义校验器

你可以通过Angular自定义Validator实现需求,代码如下:

import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';

export function pureCharacterValidator(): ValidatorFn {
  return (control: AbstractControl): ValidationErrors | null => {
    const inputVal = control.value ?? '';
    // 纯格鲁吉亚字符正则
    const georgianOnly = /^[\u10D0-\u10F0]+$/;
    // 纯拉丁字母正则
    const latinOnly = /^[a-zA-Z]+$/;

    // 满足任意一个纯字符规则即校验通过
    return georgianOnly.test(inputVal) || latinOnly.test(inputVal) 
      ? null 
      : { invalidCharacter: true };
  };
}

注:同一个非空输入不可能同时满足纯格鲁吉亚和纯拉丁两个正则规则,因此不需要额外写互斥判断逻辑,天然就能过滤混合输入、包含数字/特殊字符的场景。

2. 表单中引入校验器

以响应式表单为例,在控件初始化时加入上述校验器即可:

import { FormControl, FormGroup, Validators } from '@angular/forms';

// 表单初始化
this.validateForm = new FormGroup({
  targetInput: new FormControl('', [
    Validators.required,
    pureCharacterValidator()
  ])
});

如果使用模板驱动表单,将上述校验逻辑封装为Angular指令挂载到对应input控件上即可生效。

内容的提问来源于stack exchange,提问作者user14374256

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 17:42:03