当前位置: 首页 > 知识库问答 >
问题:

为什么顺序在这个有交替的RegEx中很重要?

司徒兴思
2023-03-14

TextBox控件的要求是接受以下内容作为有效输入:

    null
"Number of rooms|[0-9]*"
"[0-9]*|Number of rooms"

更新:

第二个regex成功地匹配了console app中的目标字符串“Number of Rooms”,如下所示。但是,当输入为“房间数量”时,在aspx标记中使用相同的表达式并不匹配。以下是相关的aspx标记:

<asp:TextBox runat="server" ID="textbox1" >
</asp:TextBox>

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" 
EnableClientScript="false" runat="server" ControlToValidate="textbox1" 
ValidationExpression="[0-9]*|Number of rooms" 
ErrorMessage="RegularExpressionValidator"></asp:RegularExpressionValidator>

<asp:Button ID="Button1" runat="server" Text="Button" />

共有1个答案

晏望
2023-03-14

顺序很重要,因为这是Regex引擎试图匹配的顺序。

案例1:<代码>房间数[0-9]*

在这种情况下,regex引擎将首先尝试匹配文本“Number of Room”。如果失败,将尝试匹配数字或什么都不匹配。

更新:回答你的第二个问题。它与RegularExpressionValidator的行为不同,因为它所做的不仅仅是检查匹配。

// .....
Match m = Regex.Match(controlValue, ValidationExpression);
return(m.Success && m.Index == 0 && m.Length == controlValue.Length); 
// .....

它正在检查匹配,并确保匹配的长度是整个字符串。这排除了部分匹配或空匹配。

 类似资料:
  • 问题内容: 最近,我一直在设计响应速度更快的网站,并且经常使用CSS媒体查询。我注意到的一种模式实际上是定义媒体查询的顺序。我没有在每个浏览器中都进行过测试,只是在Chrome上进行了测试。有这种行为的解释吗?有时,当您的网站无法正常运行时,它会令人沮丧,并且您不确定这是查询还是编写查询的顺序。 这是一个例子: HTML CSS: 但是,如果我最后一次为1024x600编写查询,浏览器将忽略它,并

  • 问题内容: 我认为Maven依赖关系的顺序之前无关紧要,并认为这是它的一个优点。这是我以前的依赖项: 它运作良好,今天我要把对弹簧的依赖移到最底层,以便与那些球衣相关的东西可以在一起。但是后来我再也无法正常工作了,我的码头抱怨道: 那真的很令人困惑,所以我是否需要考虑依赖顺序?我怎么知道正确的顺序? 问题答案: 依赖关系的顺序确实很重要,因为从2.0.9版开始,Maven如何解决传递依赖关系。文档

  • 我必须用一些代码来回答这个问题: 假设我编写了以下方法规范: 您正在为一个将使用此方法的数据库程序编写代码,并且希望专门处理每个程序。try/catch子句应该是什么样的 您可以对catch子句内容使用no-ops——空块{}<我们只对这里语句的语法和结构感兴趣。 我回答说: 出于这个原因,他没有接受这个答案: “你的catch子句顺序不对。你能解释一下为什么顺序很重要吗?” 他的回答正确吗?

  • 问题内容: 假设我有一个条件: 现在假设那很可能会收到一个真实的值,为什么我要关心左边的那个? 如果将它们都放在方括号中,那么我(作为代码的程序员)知道双方都是需要的。 问题是,我的教授在他的演讲笔记上写道,我应该在左边加上“更可能的变量以得到一个真”。 有人可以解释一下好处吗?好吧,我把它放在左边…我正在获得什么?运行 ? 问题答案: 它不只是在左侧选择最可能的条件。您也可以在左侧设置一个安全门

  • 我理解,不可能用有限的位数来表示所有数字的任意精度,对浮点数进行天真的比较是不可取的。但我想,如果我把许多数字加在一起,我添加它们的**顺序**并不重要。 为了测试这个预测,我创建了一个随机数向量并计算它们的和,然后对向量排序并再次计算和。通常,这两个总数不匹配!这是我的代码(包含在下面)的一个问题,是浮点算法的一个缺点,还是可以通过切换编译器等来解决的问题。?

  • 在这个打印从1到10000000的所有数字、Haskell版本和C版本的简单程序中,为什么Haskell版本如此缓慢,以及哪些命令有助于学习如何提高Haskell程序的性能? 下面是一份报告,包含重现我激动人心的事件所需的所有细节,制作报告时会打印出来源,包括Makefile的来源: