- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
RegularExpressionValidator.ValidationExpression="\d{10}"
表示仅数字 - 最多 10 个。
RegularExpressionValidator.ValidationExpression="\d{10,12}"
表示仅数字 - 10、11 或 12。
如何强制严格使用 10 或 12 个符号?
最佳答案
一种方法是:
"\d{10}(\d{2})?"
或者您可以更明确,但会牺牲一点性能:
"^(\d{10}|\d{12})$"
第二个表达式中 anchor 的原因描述为here :
<小时/>If you experience problems with pattern-matching constructs, try wrapping the expression with "^(" and ")$". For example, "a|ab" becomes "^(a|ab)$".
更新
我对为什么 \d{10}|\d{12}
无法正常工作很感兴趣,并决定深入研究验证器的源代码以了解失败的原因。
RegularExpressionValidator
使用相同的正则表达式验证服务器端和客户端,在 \d{10}|\d{12}
的情况下长度为 12 时在客户端失败,但长度为 10 时有效。源代码揭示了如何进行匹配:
var rx = new RegExp(val.validationexpression);
var matches = rx.exec(value);
return (matches != null && value == matches[0]);
请注意,此正则表达式是 A|B
但如果 A 匹配,则甚至永远不会检查 B - 正则表达式在管道操作上不是“贪婪” - 它会采用它找到的第一个匹配项。所以这个正则表达式的匹配结果是,即使你输入了12位数字,十位数字也匹配成功。但是测试 value == matches[0]
失败,因为匹配不是完整的字符串。
交换术语的顺序,即编写 \d{12}|\d{10}
,确实有效,因为首先测试较长的匹配,并且仅当长匹配失败时才测试较短的匹配。
经验教训:在 RegularExpressionValidator
中使用管道时,最好显式使用 anchor ,以避免担心术语的顺序。
关于.net - RegularExpressionValidator.ValidationExpression 强制长度为 10 或 12 个符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2337176/
我为我的糟糕写作道歉,英语不是我的第一语言。 我需要为此正则表达式 好 -1000000.00 = 7 digits and 2 decimals with negative -100 100000
我有一个文本框。我添加了一个正则表达式来验证可以包含一个或 20 个字符的文本框,如下所示 我想确保文本框也不包含 PIPE (|) 符号。如何在一个 ValidationExpression 中
使用上述控件来验证 ASP.NET TextBox,我很好奇最流行的做法是什么。目前使用: ValidationExpression="^[\w\d\s.,"'-]+$" 还有更短的方法吗?
我需要编写这样的表达式 123/12-125 必须接受(/和 -) 。 我像这样写了 ValidationExpression "^(\d*\/?\d*)^(\d*\-?\d*)$" 但是没用 “/”
我找到了这个问题的答案,但这有点棘手,所以我想在这里分享。 我有一个验证密码的正则表达式。它们应为 7 到 60 个字符,其中至少有 1 个数字和 1 个字母字符。相当标准。我使用正向前瞻((?= 运
我正在使用正则表达式来过滤最终用户输入的无效输入。 可接受的输入是 word , space , digital和 . / @ , # & $ _ : ? ' % ! – ~ " | + ; ” {
RegularExpressionValidator.ValidationExpression="\d{10}" 表示仅数字 - 最多 10 个。 RegularExpressionValidator
我是一名优秀的程序员,十分优秀!