正则表达式允许额外的字符

Jak*_*een 4 c# regex

当尝试在C#中编写Regex表达式时,正则表达式本身是正确的并匹配字符串:

String telRegex = @"(^0[0-9]{10})|(\(0[0-9]{4}\)[0-9]{6}$)";
Match telRegexResult = Regex.Match(textBox1.Text, telRegex);
if (telRegexResult.Success) {
    MessageBox.Show("Your Regex Matches!");
} else MessageBox.Show("Your Regex doesn't match!");
Run Code Online (Sandbox Code Playgroud)

如果我把"01446847362"它显示正则表达式匹配,这是预期的结果,但如果我也把"01446847362word",它也会表明它是正确的.

有什么我可以添加到我的正则表达式,以使它切断?

Iri*_*ium 6

你的正则表达式包括一个替换,这意味着它捕获:

^0[0-9]{10}
Run Code Online (Sandbox Code Playgroud)

要么:

\(0[0-9]{4}\)[0-9]{6}$
Run Code Online (Sandbox Code Playgroud)

你会因此注意到,任何一方都包括两对^线的起点和$终点的线相匹配,这是你需要什么,以确保整个字符串匹配.

试试以下,其中移动^和$交替(这是现在自己的组内)外:

String telRegex = @"^((0[0-9]{10})|(\(0[0-9]{4}\)[0-9]{6}))$";
Run Code Online (Sandbox Code Playgroud)