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

求支持多语言的Angular表单正则表达式(无重复等限制)

Angular表单多语言字符正则校验解决方案

需求明确

  • 禁止输入任何空格
  • 字段首尾不能出现逗号
  • 不允许重复出现多语言字符(支持西班牙语、法语、德语等含特殊变音符号的字符)

问题现状

当前使用的正则无法满足全部校验需求,尝试过的多语言适配正则也未生效。

正确正则表达式

^(?!.*\s)(?!,)(?!.*,$)(?!.*(\p{L}).*\1)^[\p{L}](?:,[\p{L}])*$

正则规则拆解

  • (?!.*\s):全局校验,禁止出现任何空格
  • (?!,):校验开头不能是逗号
  • (?!.*,$):校验结尾不能是逗号
  • (?!.*(\p{L}).*\1):禁止任何Unicode字母(涵盖所有语言的字母及变音符号)重复出现
  • ^[\p{L}](?:,[\p{L}])*$:确保内容为单个字母或字母以逗号分隔的序列,首尾均为有效字母

Angular表单代码示例

this.createForm = new FormGroup({
  letters: new FormControl('', [
    Validators.required,
    Validators.pattern(/^(?!.*\s)(?!,)(?!.*,$)(?!.*(\p{L}).*\1)^[\p{L}](?:,[\p{L}])*$/u)
  ]),
});

注意:若使用字符串形式传入正则,需转义反斜杠,格式为'^(?!.*\\s)(?!,)(?!.*,$)(?!.*(\\p{L}).*\\1)^[\\p{L}](?:,[\\p{L}])*$',推荐使用正则字面量更直观。

验证示例

不合法输入

  • A,B,C,A(重复字符A)
  • A, B,C,D(包含空格)
  • A,B,C,D,(结尾为逗号)
  • ,A,B,C,D(开头为逗号)
  • Á,B,Á(重复字符Á)

合法输入

  • A,E,I,O,U,Y,À,È,Ù,É,Â,Ê,Î,Ô,Û,Ë,Ï,Ü,Ÿ,Æ,Œ,Ç(无重复、无空格、首尾无逗号)
  • A,E,U,O,I,Ä,Ü(格式合规)
  • Á,Â,Ã,Ú,Í,E,Ê,É,Ó,Ô,O(无重复字符)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:24:52