首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex:为什么@"^([0-9]|10)“不匹配'10'?

Regex:为什么@"^([0-9]|10)“不匹配'10'?
EN

Stack Overflow用户
提问于 2011-02-15 21:33:45
回答 4查看 7.1K关注 0票数 1

我想验证文本框是否只包含介于010之间的数字。

这是我目前使用的正则表达式:

代码语言:javascript
运行
复制
@"^([0-9]|10)"

但它只与0-9匹配。我应该如何更改才能使其与10匹配??

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-15 21:38:10

来自101[0-9]匹配,因为正则表达式引擎从左到右匹配。由于您只锚定了输入的开始部分:^,因此如果1匹配,引擎就会满意。

有两种解决方案。

1-交换:

代码语言:javascript
运行
复制
@"^(10|[0-9])"

2-使用$锚定它

代码语言:javascript
运行
复制
@"^([0-9]|10)$"
票数 15
EN

Stack Overflow用户

发布于 2011-02-15 21:40:09

代码语言:javascript
运行
复制
^(10|[0-9])

因为0-9最先匹配的是10中的1。

票数 2
EN

Stack Overflow用户

发布于 2011-02-15 21:41:02

它可能是“懒惰的”,匹配第一个潜在的匹配,即"1“对"10”。也许可以试着交换一下顺序:

代码语言:javascript
运行
复制
"^(10|[0-9])"

这意味着正则表达式将首先检查'10‘,只有当没有'10’时才会检查0-9

如果这不起作用,可能会有一个标记可以

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

https://stackoverflow.com/questions/5004291

复制
相关文章

相似问题

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