gpt4 book ai didi

javascript - 具有某些条件的名字的正则表达式

转载 作者:行者123 更新时间:2023-11-30 16:49:47 24 4
gpt4 key购买 nike

我需要一个 JavaScript 正则表达式来满足以下要求:

  1. 没有数字且以下字符无效:~`?(!^*¨ˆ;@=$%{}[]|\/<>#“.,
  2. 不应该超过 3 个词
  3. 没有前后空格
  4. 最少 2 个字符

我用两个独立的正则表达式做到了:第一个是:对于没有数字和无效字符:

^[A-Za-z][^\d~`?!^*¨ˆ;@=$%{}\[\]\|\\\/<>#“.,]*$

第二个不超过3个字:

^[A-Za-z]+( [A-Za-z]+){0,2}$

我需要一个正则表达式来处理上述所有 4 个条件(或至少 3 个,因为我们可以为第 4 个条件设置最小长度条件)。

最佳答案

这是一个符合您要求的正则表达式:

^(?=(?:[^A-Za-z]*[A-Za-z]){2})(?![^\d~`?!^*¨ˆ;@=$%{}\[\]|\\\/<>#“.,]*[\d~`?!^*¨ˆ;@=$%{}\[\]|\\\/<>#“.,])\S+(?: \S+){0,2}$

参见 demo

解释:

  • ^ - 在开头锚定字符串
  • (?=(?:[^A-Za-z]*[A-Za-z]){2}) - 检查字符串中是否至少有 2 个英文字符的正向预测
  • (?![^\d~``?!^*¨ˆ;@=$%{}\[\]|\\\/<>#“.,]*[\d~``?!^*¨ˆ;@=$%{}\[\]|\\\/<>#“.,]) - 否定前瞻检查是否没有禁止字符(根据 principle of contrast 优化)(无法很好地格式化,必须加倍“`”符号)
  • \S{2,} - 由至少 2 个字符组成的单词(非空白序列)
  • (?: \S+){0,2} - 2 个单词,至少包含 1 个字符
  • $ - 字符串结束。

关于javascript - 具有某些条件的名字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30702869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com