Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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# 检查字符串的一部分是否与正则表达式匹配_C#_Regex - Fatal编程技术网

C# 检查字符串的一部分是否与正则表达式匹配

C# 检查字符串的一部分是否与正则表达式匹配,c#,regex,C#,Regex,我试图根据各种正则表达式验证字符串;但是,如果将空白字符添加到字符串的结尾,则不会再标记它们 if (Regex.IsMatch(literal.Value.ToString().ToLower(), @"^\+?[0-9\-\(\)\.\/]{8,20}$") { //Logic } 在下面的代码中;标记X值,但不标记Z值 string x = "0337350670"; // Gets flagged string z = "0337350670 "; // Does no

我试图根据各种正则表达式验证字符串;但是,如果将空白字符添加到字符串的结尾,则不会再标记它们

if (Regex.IsMatch(literal.Value.ToString().ToLower(), @"^\+?[0-9\-\(\)\.\/]{8,20}$")
{
    //Logic
}
在下面的代码中;标记X值,但不标记Z值

string x = "0337350670"; // Gets flagged
string z = "0337350670     "; // Does not get flagged

我应该更改正则表达式还是有办法根据字符串的一部分进行验证?

您可以从字符串末尾删除
$
字符串结尾字符,然后添加
*

if (Regex.IsMatch(literal.Value.ToString().ToLower(), @"^\+?[0-9\-\(\)\.\/]{8,20}.*")
{
    //Logic
}

现在它将匹配这两个字符:

您可以从字符串末尾删除
$
字符串结尾字符并添加
*

if (Regex.IsMatch(literal.Value.ToString().ToLower(), @"^\+?[0-9\-\(\)\.\/]{8,20}.*")
{
    //Logic
}

现在,它将同时匹配:

从正则表达式中删除
^
$
将允许表达式匹配字符串中的任何位置。

从正则表达式中删除
^
$
将允许表达式匹配字符串中的任何位置。

您只需
修剪
字符串以从两侧删除尾部空白

此外,许多特殊的正则表达式字符在字符类中不再特殊(
-
仍然是,但如果您这样说的话,它将被转义:
[…-]


删除
^$
也可以,但请注意,这将允许一行中包含超过20个数字的字符串:您不再检查最大长度(任何包含
[0-9()./-]{8}
的内容都将匹配)。

您只需对字符串进行
修剪
即可删除字符串两侧的尾随空格

此外,许多特殊的正则表达式字符在字符类中不再特殊(
-
仍然是,但如果您这样说的话,它将被转义:
[…-]


删除
^$
也可以,但请注意,这将允许一行中包含超过20个数字的字符串:您不再检查最大长度(任何包含
[0-9()./-]{8}
的内容都会匹配)。

这里您还需要添加
*
来开始和结束,不是吗?我实际上已经检查了,这是不需要的,如果删除“^”和“$”。+1删除
$
是最快的方法@Matthijs只是一个旁注,
“0337350670sometext”
也会被标记,如果你只想在结尾允许空白,你可以使用
“^\+?[0-9\-\(\)\。\/]{8,20}\s*$”
“0337350670sometext”确实会被标记,这就是为什么这不是一个适合我的答案;请看Robin提出的修剪选项。@Matthijs您确实要求进行部分字符串匹配!在这里,您还需要添加
*
来开始和结束,不是吗?我实际上已经检查过了,如果您删除^and$,这是不需要的。+1删除
$
是最快的方法@Matthijs只是一个旁注,
“0337350670sometext”
也会被标记,如果你只想在结尾允许空白,你可以使用
“^\+?[0-9\-\(\)\。\/]{8,20}\s*$”
“0337350670sometext”确实会被标记,这就是为什么这不是一个适合我的答案;请看Robin提出的修剪选项。@Matthijs您确实要求进行部分字符串匹配!如果我有这样的“1283712323327462387462”,会发生什么?修剪后的字符串是否会变成“1283712323327462387462”?否,
Trim
设计用于仅删除尾随空格:请参阅我喜欢的补充说明,删除$将允许使用20+位的字符串;因为这是一个关键因素。你的方法最合适@马提斯:很高兴我能帮上忙!如果我有这样的“1283712323327462387462”,会发生什么?修剪后的字符串是否会变成“1283712323327462387462”?否,
Trim
设计用于仅删除尾随空格:请参阅我喜欢的补充说明,删除$将允许使用20+位的字符串;因为这是一个关键因素。你的方法最合适@马提斯:很高兴我能帮上忙!