2016-08-01 140 views
2

我試圖把一個正則表達式模式,匹配一個字符串,包含單詞「前」,並不包含單詞「平方」。我可以單獨完成這項工作,但無法將它們放在一起。JavaScript的正則表達式:字符串包含此,但不是

前面= YES

^((?=front).)*$ 

平方= NO

^((?!square).)*$ 

然而,如何予這些組合成單正則表達式表達?

+2

的答案在這裏是正確的,但爲什麼要使用正則表達式?爲什麼不只是'(text.indexOf('front')> = 0)&&(text.indexOf('square')=== -1)'? – smarx

+1

或者ES6'text.includes(「front」)&&!text.includes(「square」)'(但還沒有完全支持) – Arnauld

回答

2

您可以使用只爲這一個負前瞻:

/^(?!.*square).*front/ 
  • (?!.*square)爲負先行斷言失敗,如果square存在的任何地方輸入
  • ^.*front將在輸入
  • 之間是否匹配 front
+0

感謝您的支持!如果我想測試它是否包含它們,以任何順序呢? –

+0

[https://regex101.com/r/fY0yW6/1] – anubhava

+0

'如果它包含它們,它們都以任何順序'然後使用**'/^(?=.* square)(? =。* front)/ ** ** – anubhava

0

您可以使用lookahead斷言來表達邏輯和:

最終的模式將看起來像:

^(?=.*?front)(?!.*square) 
相關問題