正则表达式匹配字符串中任意位置的多个字符串
Regex to match for multiple strings anywhere within a string
我正在尝试使用 Regex 在 ASP.NET 中添加一些验证。本质上,我需要确保文本框包含 ***ThisString*** 和 ***ThatString***,包括星号。
我可以让它与一个或另一个一起工作,只是不能同时出现在 string.l 它正在验证的任何部分。
谢谢
正如三聚氰胺正确指出的那样,如果其中一个字符串有多个而另一个字符串没有,我的解决方案将不起作用。如果可能发生这种情况,为了便于阅读,您可以分别检查每个字符串
第一个正则表达式- (?:\*{3}ThisString\*{3})
第二个正则表达式- (?:\*{3}ThatString\*{3})
如果在两种情况下都找到匹配项,那么您就可以开始了!
原答案:-
这是你想要的正则表达式:(?:\*{3}(?:ThisString|ThatString)\*{3})
注意:确保启用全局匹配并确保正确转义星号。
如果上述表达式找到 2 个(或更多)匹配项,则表示您可以开始了。
解释:-
- 整个东西都在一个非捕获组中,这是为了确保里面的所有东西都得到完全匹配
- 弦的每一侧有 3 颗星,一侧有 3 颗星而另一侧没有将 不会 匹配
ThisString
和 ThatString
都在一个分组的替代方案中,这是为了减少混乱,你可以完全堵塞所有可能的位置模式,但这样更好,因为位置在这里无关紧要。 ***ThatString***
可以在 ***ThisString***
之前,反之亦然。
确定检查找到的匹配项的长度,长度必须是 2
描述的条件要满足。
根据@Chase 的回答,我得出以下结论:
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
Regex thisString = new Regex("(?:\*{3}ThisString\*{3})");
Regex thatString = new Regex("(?:\*{3}ThatString\*{3})");
if (!thisString.IsMatch(value.ToString()) || !thatString.IsMatch(value.ToString()))
{
return new ValidationResult("***ThisString*** and ***ThatString*** are used to generate the email text. Please ensure the text above has both ***ThisString*** and ***ThatString*** somewhere within the text."); }
return ValidationResult.Success;
}
现在,如果任一正则表达式模式在任何地方都不匹配,它将 return 出错。
我正在尝试使用 Regex 在 ASP.NET 中添加一些验证。本质上,我需要确保文本框包含 ***ThisString*** 和 ***ThatString***,包括星号。
我可以让它与一个或另一个一起工作,只是不能同时出现在 string.l 它正在验证的任何部分。
谢谢
正如三聚氰胺正确指出的那样,如果其中一个字符串有多个而另一个字符串没有,我的解决方案将不起作用。如果可能发生这种情况,为了便于阅读,您可以分别检查每个字符串
第一个正则表达式-
(?:\*{3}ThisString\*{3})
第二个正则表达式-
(?:\*{3}ThatString\*{3})
如果在两种情况下都找到匹配项,那么您就可以开始了!
原答案:-
这是你想要的正则表达式:(?:\*{3}(?:ThisString|ThatString)\*{3})
注意:确保启用全局匹配并确保正确转义星号。
如果上述表达式找到 2 个(或更多)匹配项,则表示您可以开始了。
解释:-
- 整个东西都在一个非捕获组中,这是为了确保里面的所有东西都得到完全匹配
- 弦的每一侧有 3 颗星,一侧有 3 颗星而另一侧没有将 不会 匹配
ThisString
和ThatString
都在一个分组的替代方案中,这是为了减少混乱,你可以完全堵塞所有可能的位置模式,但这样更好,因为位置在这里无关紧要。***ThatString***
可以在***ThisString***
之前,反之亦然。
确定检查找到的匹配项的长度,长度必须是 2 描述的条件要满足。
根据@Chase 的回答,我得出以下结论:
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
Regex thisString = new Regex("(?:\*{3}ThisString\*{3})");
Regex thatString = new Regex("(?:\*{3}ThatString\*{3})");
if (!thisString.IsMatch(value.ToString()) || !thatString.IsMatch(value.ToString()))
{
return new ValidationResult("***ThisString*** and ***ThatString*** are used to generate the email text. Please ensure the text above has both ***ThisString*** and ***ThatString*** somewhere within the text."); }
return ValidationResult.Success;
}
现在,如果任一正则表达式模式在任何地方都不匹配,它将 return 出错。