簡體   English   中英

不包含正則表達式中包含字符串的URL

[英]Excluding URLS that contain a string in Regex

我正在使用正則表達式將調查添加到頁面,並且希望將其包括在除付款和登錄頁面之外的所有頁面上。 我不能在正則表達式中使用環顧四周,因此我嘗試使用以下內容,但它不起作用。

^/.*[^(credit|signin)].*應該捕獲所有URL,除了包含credit或signin的URL

[指示字符類的開始,並且[^否定是每個字符。 因此,您的正則表達式是“任何后跟該類中沒有的任何字符,后跟任何東西”,這很可能匹配任何東西。

由於您使用的是特定字符串,因此我認為此處不適合使用正則表達式。 檢查creditsignin是否不存在於字符串中會容易得多,例如使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM