首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >验证混合数据中的字符和数字

验证混合数据中的字符和数字
EN

Stack Overflow用户
提问于 2017-03-28 15:45:49
回答 2查看 129关注 0票数 1

我创建了以下搜索模式:

1)在给定范围内的搜索号码,不包括特定的号码(不包括1、2、8)

代码语言:javascript
运行
复制
 string numberPattern = @"^([3-7|9 ]*)$";

2)在给定范围内搜索字母,并排除特定字符(不包括B、V)

代码语言:javascript
运行
复制
string characterPattern = @"^(?:(?![BV])[A-Z ])+$";

可以有三种输入:

  • 输入可以只是字符:ANRPIGHSAGASGG
  • 输入可以是数字:34567934567967
  • 输入可以是字母和数字:9ANRPIG34HS56A

问题:

有没有办法告诉regex,如果使用数字模式,那么它会忽略字符,而对于字符模式,它会忽略数字?数据可以是混合的,按照混合顺序,我只看到了将数字和字符分组在不同的列表中,然后使用相关的模式。

是否有一种仅使用regex就能实现这一目标的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-28 16:45:42

我建议用

代码语言:javascript
运行
复制
^[3-79A-Z -[BV]]*$

regex演示

详细信息

  • ^ -字符串锚的开始
  • [3-79A-Z -[BV]]* -零或更多(*)字符:
    • 3-79A-Z -从379、大写ASCII字母和空格( BV ASCII字母除外)的数字( -[BV]是一个字符类减法结构)

  • $ -字符串锚的末端。
票数 2
EN

Stack Overflow用户

发布于 2017-03-28 17:25:41

将它置于一个更易读的状态,这样您就可以维护它。

^(?:[0-9A-Z](?<![128BV]))+$

解说

代码语言:javascript
运行
复制
 ^                        # Beginning of string
 (?:                      # Cluster group
      [0-9A-Z]                 # Initially allow  0-9 or A-Z
      (?<! [128BV] )           # Qualify, not 1,2,8,B,V
 )+                       # End cluster, must be at least 1 character
 $                        # End of string
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43074095

复制
相关文章

相似问题

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