我有以下RegExp
:(?<= )L.*(?!MH$)
。
这个想法是:
(?<= )
4个空格必须位于比赛之前,但不包括在比赛中。 L.*
匹配项必须以L
开头,并包括字符串的其余部分... (?!MH$)
除非 MH
在字符串的末尾。 最后一个条件被忽略。以
MH
结尾的字符串仍然匹配。为什么?const regExpStr = String.raw`(?<= )L.*(?!MH$)`;
const regExp = new RegExp(regExpStr);
const str = '2. L2 B4 RHODA 1 ADDN,SOMECITY,OK,74999 - 81 HILLCREST MH';
const match = str.match(regExp)?.[0];
console.log(match);
最佳答案
最后,您可以在正则表达式后面加上一个额外的负数:
(?<= {4})L.*$(?<!MH)
RegEx DemoRegEx详细信息:
(?<= {4})
:当我们在当前位置L.*$
:匹配以L
开头的字符串,直到(?<!MH)
:当我们在当前位置(结束)MH
时,匹配失败