我刚开始使用Regex,遇到了一个问题。我已经到了一定的地步,我陷入了困境,我不知道如何"忽略"或不匹配一个有断线的引脚,这导致代码无法通过测试。
using System;
using System.Text.RegularExpressions;
public class Pin
{
public static bool ValidatePin(string pin){
string pattern = "^([0-9]{4}|[0-9]{6})$";
Regex reg = new Regex(pattern);
Match match = reg.Match(pin);
if (match.Success) {
return true;
} else {
return false;
}
我有上面的正则表达式,我该如何实现它,以便当它试图将pin与换行符匹配时,它返回";"假";。失败的测试引脚为:"1234\n〃;。
将$
(可以在字符串末尾的换行符号之前匹配(替换为字符串的最末尾z
,使用
string pattern = @"A([0-9]{4}|[0-9]{6})z";
A
代替^
也很有用,以便始终匹配字符串的开头(如果您有意的话(。
见证明。
解释
--------------------------------------------------------------------------------
A the beginning of the string
--------------------------------------------------------------------------------
( group and capture to 1:
--------------------------------------------------------------------------------
[0-9]{4} any character of: '0' to '9' (4 times)
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
[0-9]{6} any character of: '0' to '9' (6 times)
--------------------------------------------------------------------------------
) end of 1
--------------------------------------------------------------------------------
z the end of the string