首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对6个字符的最大混合数字的Regex验证

对6个字符的最大混合数字的Regex验证
EN

Stack Overflow用户
提问于 2018-09-27 15:13:28
回答 3查看 2.2K关注 0票数 4

我需要一个混合长度的正则表达式验证,以大写/数字和0-2空格表示的4-6个字符的总长度为6个字符。

我试过

代码语言:javascript
复制
^[A-Z0-9]{4,6}+[\s]{0,2}$

但它的最大长度为8个字符,但我需要一个最大的6个字符。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-27 15:17:33

如果字母数字字符只应出现在字符串的开头,而空白空间可以出现在末尾(即字母数字和空白空间的顺序重要),则可以使用

代码语言:javascript
复制
/^(?=.{6}$)[A-Z0-9]{4,6}\s*$/

regex演示

详细信息

  • ^ -字符串的开始
  • (?=.{6}$) -字符串长度仅限于6个非行中断字符。
  • [A-Z0-9]{4,6} - 4,5或6大写字母或数字
  • \s* - 0+空白空间(但实际上只能添加0、1或2,因为总长度已经通过查找验证了)
  • $ -字符串的末端。

如果要匹配字符串中任何位置的字母数字和空白空间,则需要一个基于环顾四周的正则表达式,如

代码语言:javascript
复制
^(?=(?:[^A-Z0-9]*[A-Z0-9]){4,6}[^A-Z0-9]*$)(?=(?:\S*\s){0,2}\S*$)[A-Z0-9\s]{6}$

regex演示

详细信息

  • ^ -字符串的开始
  • (?=(?:[^A-Z0-9]*[A-Z0-9]){4,6}[^A-Z0-9]*$) -在字符串中任何地方都需要有4到6个字母或数字的正面展望。
  • (?=(?:\S*\s){0,2}\S*$) -在字符串中的任何位置都需要0到2个空白空间的积极展望
  • [A-Z0-9\s]{6} -6 ASCII大写字母、数字或空白
  • $ -字符串的末端。

为了缩短模式,第二次查找可以写为(?!(?:\S*\s){3}),如果字符串中任何地方都有3个空格字符,它就会失败。见regex演示

票数 4
EN

Stack Overflow用户

发布于 2018-09-27 15:33:49

您可以使用|字符将多个情况合并为一个。

代码语言:javascript
复制
const regex = /(^[A-Z0-9]{4}\s{2}$)|(^[A-Z0-9]{5}\s$)|(^[A-Z0-9]{6}$)/g;
alert(regex.test(prompt('Enter input, including space(s)')));

票数 1
EN

Stack Overflow用户

发布于 2018-09-27 15:34:06

如果您想匹配零,一个或两个空格在结尾,您可以使用交替为这3种情况。

^(?:[A-Z0-9]{4}[ ]{2}|[A-Z0-9]{5}[ ]|[A-Z0-9]{6})$

Regex演示

解释

  • ^断言字符串的开始
  • (?:非捕获群
    • [A-Z0-9]{4}[ ]{2}匹配大写或数字4次,后面跟着2个空格
    • |
    • [A-Z0-9]{5}匹配大写或数字5次,后面跟着1个空格
    • |
    • [A-Z0-9]{6}匹配大写或数字6次

  • )闭非捕获群
  • $断言字符串的结尾
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52540181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档