【发布时间】:2019-05-30 10:03:50
【问题描述】:
我在 RegularExpressionValidator 中使用了这个精确的正则表达式,它工作正常。但是,c# 中的此代码返回 true。你能告诉我我做错了什么吗?
我只检查数字正则表达式
var x = Regex.IsMatch("1234asdf", @"[0-9]+").ToString();
【问题讨论】:
-
当然返回true。为什么不应该呢?我不知道您在提到什么 RegularExpressionValidator,但也许 RegularExpressionValidator 有一个设置(已启用),使其将正则表达式锚定到字符串的开头和结尾......
-
它匹配是因为
Regex.IsMatchAPI 试图在输入字符串的 any 部分中找到匹配的模式。如果要强制整个字符串输入匹配,请使用模式^[0-9]+$。这将匹配仅由数字组成的输入。 -
因为它只会匹配数字。你还没有告诉它匹配整个字符串。
-
[0-9]+表示“一位或多位数字”,我们有1234匹配模式;你的意思是"^[0-9]+$"模式? (一位或多位仅限) -
RegularExpressionValidator如果您自己没有锚定,则会添加锚定。它将确保没有与正则表达式不匹配的字符。为了自己做,你必须添加锚,正如@Tim所说。