首页 > 解决方案 > RegEx 可能的优化和速记技巧

问题描述

我试图创建一个正则表达式,它匹配 1 到 20 个字符且不超过一个空格的用户名(尽管是可选的)。并通过反复试验获得了这个厚实的正则表达式:

[0-9A-Za-z]{3,20} ?[0-9A-Za-z]{1,20}

如何优化此 RegEx 使其更短且通常更好?

标签: javascriptregex

解决方案


使用负前瞻表示输入字符串不能有两个空格:

^(?!\S* \S* )[0-9A-Za-z ]{1,20}$

正则表达式演示

注意:您的正则表达式在前 3 个位置不允许有空格,但这个允许。我只是通过你的口头描述,而不是你的正则表达式。(您的正则表达式还允许名称中包含超过 20 个字符,多达 41 个,这就是我忽略它的原因)。


推荐阅读