【问题标题】:Optimize group of characters for a cleaner code优化字符组以获得更清晰的代码
【发布时间】:2020-02-18 19:00:09
【问题描述】:

我需要一些帮助来优化这组字符[qwertyuiopasdfghjklzxcvbnmàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇߨøÅ寿œ] 显然它真的很大,所以我需要它更小,以便我可以将它用于正则表达式,如下所示:

let N = /^N1\d{14}[^qwertyuiopasdfghjklzxcvbnmàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇߨøÅ寿œ]{78}$/;

我尝试了其他站点和这个站点的示例,但没有按预期工作,有人可以帮助我吗?

这个正则表达式应该匹配一种像这样的寄存器:

注册

N108258594000135255240708     315370        BLABLA BLABLABL BLAB BLA                          

【问题讨论】:

  • 表达式的长度与它是否有效有什么关系?
  • 用通俗易懂的语言描述正则表达式应该匹配的内容。
  • 请说明您使用的是哪种语言或工具。有许多不同风格的正则表达式,其中一些具有此类的内置字符集。
  • 对于初学者来说,a-z 可以用来代替qwertyuiopasdfghjklzxcvbnm

标签: javascript regex


【解决方案1】:

你为什么要否定角色组?列举可以出现的字符而不是不能出现的字符不是更好吗?

这将是一个更简洁的正则表达式:

let N = /^N1\d{14}[ 0-9A-Z]{78}$/;

【讨论】:

  • 因为这 78 个必须全部为大写且没有任何类型的重音或小写,但特别是 can't 匹配 those 字符
  • @Lagaggio 是的,只是因为它们必须全部大写,不能重读或小写,我的解决方案更好。它只允许大写字母、数字和空格。枚举所有重读字母是不可能的。看看 Unicode...
  • 但是我可以介绍?、| 或! 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多