首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配8位数字或1-8位数字和星号。

匹配8位数字或1-8位数字和星号。
EN

Stack Overflow用户
提问于 2016-06-23 18:43:16
回答 2查看 216关注 0票数 1

我正在创建一个搜索框来搜索一个有8位数的数字或一个通配符搜索。它应该只允许在结尾或开头有一个可选星号:

代码语言:javascript
复制
Valid results
12345678
87654321
1112223*
12*
1345*
*123456*
*1234567
*1*    

Invalid results
1234567
A
12-
12@
**
**1234**
&T(
*
*1*2*
89789A8

试图创建一个正则表达式来解决这个问题。我现在有这样的情况:

代码语言:javascript
复制
"\d{8}"

但它只允许8位数,而不是开头或结尾的“*”字符。任何帮助都将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-23 18:46:08

您需要8位数字,或1-7位数字,在开始或结束时有一颗星,或1-6位数字,在开始和结束时有一颗星:

代码语言:javascript
复制
"\d{8}|\d{1,7}\*|\*\d{1,7}|\*\d{1,6}\*"

您没有提到regex的风格,但是由于您使用了{8},我认为它可以处理范围。否则,您将需要类似于\d\d?\d?\d?\d?\d?的东西。

您可能需要锚点,这取决于所使用的语言和调用正则表达式的选项,在这种情况下,您将拥有

代码语言:javascript
复制
"^(\d{8}|\d{1,7}\*|\*\d{1,7}|\*\d{1,6}\*)$"

在线测试器(使用多行和全局显示这里的所有匹配项):https://regex101.com/r/uQ1yY8/1

票数 3
EN

Stack Overflow用户

发布于 2016-06-23 18:53:10

一种可能的regexp:

代码语言:javascript
复制
\d{8}|\*?(\d{1})+\*

可能它将需要一个"$“在最后(取决于您的RE引擎)。

UPDATE1:

说得好,我错过了那个。更好的版本:

代码语言:javascript
复制
^\*?(\d{1})+\*?$

UPDATE2:

代码语言:javascript
复制
^\*?(\d{1,7})\*$|^\*(\d{1,7})\*?$|^\d{8}$
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37999439

复制
相关文章

相似问题

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