我有一些验证代码可以根据正则表达式检查字符串。
Regex regex = new Regex(RegexPattern);
if (!regex.IsMatch(value))
{
errorMessage = "The data is not in the correct format.";
return false;
}
如果我将正则表达式模式设置为^[0-9]*.[0-9]*.[0-9]*.[0-9]*$
,它会正确接受1.0.0.0
;但是,它也接受1.0.0.
。
如何修改模式以便接受1.0.0.0
但拒绝1.0.0.
?
答案 0 :(得分:5)
[0-9]*
表示出现{0}或更多[0-9]
[0-9]+
表示发生一次或多次[0-9]
^[0-9]*.[0-9]*.[0-9]*.[0-9]*$
将*
更改为+
:
^[0-9]+.[0-9]+.[0-9]+.[0-9]+$
答案 1 :(得分:2)
对*和+只是一个小小的误解。前者接受不出现或多出现(> = 0),后者仅在这样的词汇出现至少一次(> = 1)时才匹配。
^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$
我通常也为了安全而逃离点,不完全确定它是否必要,但我仍然这样做。 :)
答案 2 :(得分:0)
您可以使用此模式:
^\d+\.\d+\.\d+\.\d+$
说明:
^ - begin of string
\d - any digit
+ - at least one char
\. - exactly a dot char
$ - end of string
顺便说一句,您的输入看起来像一个IP地址。如果是这样,你可以像这样修改你的reges:
^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
{1,3}表示:'从1到3个字符'
演示: regex101
答案 3 :(得分:0)
匹配以句点
分隔的4组数字 ^\d+(?:\.\d+){3}$