首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式来验证给定的输入(接受一个空格)或连字符(作为文本长度的一部分)。

正则表达式来验证给定的输入(接受一个空格)或连字符(作为文本长度的一部分)。
EN

Stack Overflow用户
提问于 2022-09-27 06:04:30
回答 1查看 28关注 0票数 0

在下面的示例中,我正在验证这4个字符的文本是否包含一个空格或连字符(-),或者没有,也只有4个字符。

代码语言:javascript
复制
Regex : ^[A-Z0-9]{4}$|(?=^.{4}$)^[A-Z0-9]+[- ]?[A-Z0-9]+$ 

它按照下面的情况工作,但未能验证文本包含所有相同字符,如1111,AAAA是不允许的。

代码语言:javascript
复制
1234  valid
12-4  valid
12 4  valid  
1111  invalid ( as all are the same characters)
11-1  invalid ( as all are the same characters)
12345 invalid
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-27 06:38:09

您可以使用此正则表达式来匹配字符串:

代码语言:javascript
复制
^(?=[A-Z0-9]+[ -]?[A-Z0-9]+$)(?!([A-Z0-9])(?:\1|[ -]){3}).{4}$

Regex解释:

  • 字符串的^开始
  • (?=[A-Z0-9]+[ -]?[A-Z0-9]+)断言该字符串由一个或多个A-Z0-9、可选或-和一个或多个A-Z0-9组成。
  • (?!([A-Z0-9])(?:\1|[ -]){3})断言,第一个字符并不是在有一个字符的每个位置上重复的。
  • .{4}$只匹配字符串开始和结束之间的4个字符。

基于regex101的演示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73863007

复制
相关文章

相似问题

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