我正在RegularExpressionValidator中使用此正则表达式,它工作正常。但是,此代码在c#中返回true。您能告诉我我在做什么错吗?
我只检查数字正则表达式
var x = Regex.IsMatch("1234asdf", @"[0-9]+").ToString();
答案 0 :(得分:3)
因为正在提供的字符串中找到您要查找的内容。
您可以使用^
和$
强制整个字符串对正则表达式进行数学运算:
^[0-9]+$
^
匹配字符串的开头$
,结尾
请查看此文档的“锚点”部分:Regular Expression Language - Quick Reference
顺便说一句,应该使用[0-9]
代替\d
答案 1 :(得分:1)
其他答案则讨论了为什么需要固定您的正则表达式。但是,没有人对您的问题的RegularExpressionValidator
部分感兴趣。
我假设您的意思是System.Web.RegularExpressionValidator
。 RegularExpressionValidator所做的不仅仅是检查正则表达式是否匹配-还检查正则表达式是否完全匹配。也就是说,它有效地为您添加了^
和$
锚点。
Match m = RegexUtil.Match(controlValue, ValidationExpression, RegexOptions.None, MatchTimeout);
return(m.Success && m.Index == 0 && m.Length == controlValue.Length);
请注意如何检查m.Success
,但还要检查匹配是否从要检查的值的开头开始,到结束于要检查的值的结尾为止。
(System.ComponentModel.DataAnnotations.RegularExpressionAttribute
做同样的事情)。
答案 2 :(得分:0)
您必须使用^和$强制整个字符串与正则表达式模式匹配
^ [0-9] + $
^匹配字符串的开头,$结束
在C#中,使用以下格式编写表达式:
var x = Regex.IsMatch("1234", @"^[0-9]+$").ToString();
答案 3 :(得分:0)
因为您尝试将0到9之间的一位或多位数字匹配,请解释一下:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: xi-{{instanceId}}
name: deployment-creation
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
- apiGroups: ["batch", "extensions"]
resources: ["jobs"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
如果您的字符串中有一些数字,请输入以下代码:
[0-9] //Match digit 0-9 you can also use /d-(Match any digit char)
+ //Match one or more of the preceding token
将始终返回True。 例如,如果您尝试此操作:
var x = Regex.IsMatch("1234asdf", @"[0-9]+").ToString();
将返回False