Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NET正则表达式:{1}不工作_C#_Regex - Fatal编程技术网

C# NET正则表达式:{1}不工作

C# NET正则表达式:{1}不工作,c#,regex,C#,Regex,这输出它是匹配的,但不应该 为什么{1}不工作 在-I之后,我要显式地使用1个字符0或1或2或。。。或9或K图案未锚定到字符串末端。试一试 if (!Regex.IsMatch("1234567-8A","[0123456789]+-[0123456789K]{1}")) Console.WriteLine("It is not match"); else Console.WriteLine("It is match"); 编辑:或 !Regex.IsMatch("123456

这输出它是匹配的,但不应该

为什么{1}不工作


在-I之后,我要显式地使用1个字符0或1或2或。。。或9或K

图案未锚定到字符串末端。试一试

if (!Regex.IsMatch("1234567-8A","[0123456789]+-[0123456789K]{1}"))
    Console.WriteLine("It is not match");
else
    Console.WriteLine("It is match");
编辑:或

!Regex.IsMatch("1234567-8A","[0123456789]+-[0123456789K]$")
锚定到起点和终点以匹配整个字符串

关于{1},不需要的原因是字符类[0123456789K]已经表示匹配此列表中的一个字符。添加{1}并不会改变这一点,即匹配列表中的一个字符,后面没有其他字符。你需要一个$anchor


有关图案中锚定的信息,请参见。

图案未锚定到字符串的末端。试一试

if (!Regex.IsMatch("1234567-8A","[0123456789]+-[0123456789K]{1}"))
    Console.WriteLine("It is not match");
else
    Console.WriteLine("It is match");
编辑:或

!Regex.IsMatch("1234567-8A","[0123456789]+-[0123456789K]$")
锚定到起点和终点以匹配整个字符串

关于{1},不需要的原因是字符类[0123456789K]已经表示匹配此列表中的一个字符。添加{1}并不会改变这一点,即匹配列表中的一个字符,后面没有其他字符。你需要一个$anchor


有关模式中锚的信息,请参阅。

您的正则表达式匹配,因为它是匹配的。您没有指定这是字符串的结尾,测试字符串的结尾确实有一个数字。请尝试以下方法:

!Regex.IsMatch("1234567-8A","^[0123456789]+-[0123456789K]$")
$表示字符串的结尾

或者更好的是,也可以使用“^”作为字符串的开头:

[0123456789]+-[0123456789K]{1}$

您的正则表达式匹配,因为它是匹配的。您没有指定这是字符串的结尾,测试字符串的结尾确实有一个数字。请尝试以下方法:

!Regex.IsMatch("1234567-8A","^[0123456789]+-[0123456789K]$")
$表示字符串的结尾

或者更好的是,也可以使用“^”作为字符串的开头:

[0123456789]+-[0123456789K]{1}$

作为旁注,您可以这样编写您的模式:

^[0123456789]+-[0123456789K]{1}$

作为旁注,您可以这样编写您的模式:

^[0123456789]+-[0123456789K]{1}$
不需要正则表达式:

^[0-9]+-[0-9K]$
不需要正则表达式:

^[0-9]+-[0-9K]$

你可以用\d代替[0123456789],顺便说一下,{1}什么都不做。你可以完全省略{1}。你可以用\d代替[0123456789],顺便说一下,{1}什么都不做。你可以完全省略{1},顺便说一句,你的测试字符串的末尾确实有一个位数……这是怎么回事?@sports它与1234567-8匹配。如果没有锚,则不需要匹配整个输入字符串。@sports:您的字符串是1234567-8A。在-后面有一个数字,这是您的正则表达式所匹配的。它不关心字符串A的其余部分,因为您没有告诉它要关心它。而且您的测试字符串的末尾确实有一个位数……这是怎么回事?@sports It与1234567-8匹配。如果没有锚,则不需要匹配整个输入字符串。@sports:您的字符串是1234567-8A。在-后面有一个数字,这是您的正则表达式所匹配的。它不关心字符串A的其余部分,因为您没有告诉它要关心它。这样会更快吗?不,那样快吗?无自动机