我正在使用正則表達式向頁面添加調查,並且我希望將它包括在除付款和登錄頁面以外的所有頁面上。我不能使用正則表達式來查找,所以我試圖使用以下,但它不工作。排除在正則表達式中包含字符串的URL
^/.*[^(credit|signin)].*
這應該捕獲除包含信用卡或簽到
我正在使用正則表達式向頁面添加調查,並且我希望將它包括在除付款和登錄頁面以外的所有頁面上。我不能使用正則表達式來查找,所以我試圖使用以下,但它不工作。排除在正則表達式中包含字符串的URL
^/.*[^(credit|signin)].*
這應該捕獲除包含信用卡或簽到
[
的所有URL表示字符類的開始和[^
否定是每個字符。因此,你的正則表達式是「任何字符都不在這個類中,後面跟着任何東西」,這很可能與任何東西匹配。
由於您使用的是特定的字符串,因此我認爲這裏不適用正則表達式。這將是一個簡單得多,檢查credit
和signin
不要在字符串中存在,如使用JavaScript:
-1 === string.indexOf("credit") && -1 === string.indexOf("signin")
或者你可以檢查一個正則表達式不不比賽
false === /credit|signin/.test(string)
在正則表達式的白名單的話一般是很容易的,並通常遵循的一種形式:
^.*(?:option1|option2).*$
圖案分解爲:
^
- 串的開始.*
- 0或多個非換行符*(?:
- 開放非捕獲組
option1|option2
- |
分隔的列表的白名單選項)
- close non-capt uring組.*
- 0或多個非換行符$
- 串的端在一個正則表達式黑名單詞語是更復雜一些理解,但可以沿一個圖案來進行行:
^(?:(?!option1|option2).)*$
模式分解爲:
^
- 串的開始(?:
- 開放非捕獲組
(?!
- 開放負先行(字符串中的下一個字符不得匹配包含在負先行的值)
option1|option2
- |
的選項分隔列表黑名單)
- 接近負前瞻.
- 單個非換行符*)
- 緊密的,非捕獲組*
- 重複組0或更多次$
- 串的端基本上這種模式檢查黑名單中的值不會出現在字符串中的任何點。
*確切字符取決於語言,所以謹慎使用
的最終版本:
/^(?:(?!credit|signin).)*$/
Regex101.com說不用下面的參考串匹配 「/東西/信貸 /RARS /信貸 /我的賬戶/ ARIST /登入 /胡說/ bjah /登入」 –
@chrislipsit,但我的朋友鮑勃說這會工作!沒有認真,寫一些代碼,並檢查自己。 '['/stuff/credit','/rars','/credit','/my-account/arist/signin','/blah/bjah/signin'].map(function(val){ return/^(?:(?! credit | signin)。)* $ /。test(val) });' – zzzzBov
解釋一下你的意思是「不工作」,以及爲什麼你認爲這個正則表達式與URL有關。 –
@ScottHunter我會繼續看到帶有「信用」字樣的網址,並使用工具檢查器登錄。正則表達式是允許以最佳方式確定放置位置的輸入。 –
@chrislipsit,請用您正在使用的正則表達式的語言來標記您的問題。 – zzzzBov