如何设置正则表达式来检查字符串是否以某种模式开头并且不以某种模式结束。
示例:
Must StartsWith: "US.INR.USD.CONV"
Should not end with: ".VALUE"
Passes Regex: "US.INR.USD.CONV.ABC.DEF.FACTOR"
Fails Regex Check: "US.INR.USD.CONV.ABC.DEF.VALUE"
我正在使用C#。
答案 0 :(得分:6)
您可以根据否定前瞻:
使用此正则表达式^US\.INR\.USD\.CONV(?!.*?\.VALUE$).*$
^US\.INR\.USD\.CONV
- 在输入开始时匹配US.INR.USD.CONV
(?!.*?\.VALUE$)
- 确定行未以.value
答案 1 :(得分:4)
^US\.INR\.USD\.CONV.*(?<!\.VALUE)$
试试这个。看看演示。
https://regex101.com/r/fA6wE2/26
只需使用负面的lookbehind使.VALUE
不在$
之前或字符串结尾。
(?<!\.VALUE)$ ==>Makes sure regex engine looks behind and checks if `.VALUE` is not there when it reaches the end of string.
答案 2 :(得分:2)
你不需要正则表达式。您可以使用String.StartsWith
和String.EndsWith
if(val.StartsWith("US.INR.USD.CONV") && !val.EndsWith(".VALUE"))
{
// valid
}
正如你在对anubhava的回答中提到的那样,你可以这样做来检查&#34; .PERCENT&#34;最后也是。
if(val.StartsWith("US.INR.USD.CONV") &&
!val.EndsWith(".VALUE") &&
!val.EndsWith(".PERCENT"))
{
// valid
}
恕我直言,这使得代码更具可读性,并且几乎肯定会更快地执行。