[英]Excluding URLS that contain a string in Regex
我正在使用正則表達式將調查添加到頁面,並且希望將其包括在除付款和登錄頁面之外的所有頁面上。 我不能在正則表達式中使用環顧四周,因此我嘗試使用以下內容,但它不起作用。
^/.*[^(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
|
分離的選項列表到白名單 )
-關閉非捕獲組 .*
-0個或多個非換行符 $
-字符串結尾 將正則表達式中的單詞列入黑名單要理解起來有些復雜,但是可以通過以下方式實現:
^(?:(?!option1|option2).)*$
模式分解為:
^
-字符串的開頭 (?:
-打開非捕獲組
(?!
-打開否定前瞻(字符串中的下一個字符不得與否定前瞻中包含的值匹配)
option1|option2
|
分開的黑名單選項列表 )
-否定前瞻 .
-單個非換行符* )
-關閉非捕獲組 *
-重復該組0次或更多次 $
-字符串結尾 基本上,此模式檢查黑名單中的值是否不會出現在字符串的任何位置。
*確切的字符因語言而異,因此請謹慎使用
最終版本:
/^(?:(?!credit|signin).)*$/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.