我最近开始使用正则表达式,但我似乎无法弄清楚这个问题:
https://xxxx.yyyy.com/en
对于此URL,我想创建一个仅在以下所有条件都为真时才有效的正则表达式:
我必须验证两个单独的条件,但似乎无法将它们组合在一起
\/en\/|\/en$|^(?!.*(xxxx)).*$
你能帮忙吗?
谢谢!
答案 0 :(得分:2)
您可以使用
/^(?!.*xxxx).*\/en(?:$|\/)/
请参阅regex demo
<强>详情
^
- 字符串开头(?!.*xxxx)
- 除了换行符之外的任何0 +字符之后不能xxxx
.*
- 除了换行符之外的任何0个或更多个字符,尽可能多\/en
- /en
substring (?:$|\/)
- 字符串结尾或/
因此,如果您想用多个术语替换xxxx
,请使用
/^(?!.*(?:stage|acc)).*\/en(?:$|\/)/
请注意,如果添加单词边界,您可以强制引擎将它们作为整个单词匹配:
/^(?!.*\b(?:stage|acc)\b).*\/en(?:$|\/)/
如果您需要完整的字符串匹配,请在模式的末尾添加.*
。
答案 1 :(得分:0)
仅使用外观:
^(?!.*xxxx)(?=.*\/en(?:$|\/)).*
^ // start of line
(?!.*xxxx) // look ahead and don't match anything then 'xxxx'
(?= // look ahead and match
.*\/en // anything then '/en'
(?:$|\/) // end of line OR a slash
) // end of look ahead
.* // match all (can be omitted if testing lines)