簡體   English   中英

Javascript 正則表達式匹配多於一種類型的 URL 之間的特殊字符

[英]Javascript regex to match more than one type of special characters between URLs

我試圖確保在字符串中只使用兩種類型的特殊字符(分號、逗號或空格)。

有效案例:

  • 可以包含字母數字字母和數字
  • 可以包含特殊字符:/。
  • 分隔 URL 時最多可以包含兩種特殊字符:分號、逗號、空格和分號或空格和逗號。
  • 分隔 URL 時不能混合特殊字符分號和逗號

例如,這應該匹配,因為它只使用一種特殊字符(分號):

https://hello.com/example1;https://hello.com.com/example2;https://hello.com.com/example3

這應該通過,因為它混合了兩種允許的特殊字符(空格和分號):

https://hello.com/example1; https://hello.com.com/example2 ;https://hello.com.com/example3

這應該通過,因為它混合了兩種類型的特殊字符(逗號和分號):

https://hello.com/example1; https://hello.com.com/example2 , https://hello.com.com/example3 ; https://hello.com.com/example4

這應該會失敗,因為它在 URL 之間混合了兩種不允許的特殊字符(逗號和分號):

https://hello.com/example1;,https://hello.com.com/example2,https://hello.com.com/example3

這是我的正則表達式:

^[A-Za-z0-9:=_\/\\.\\?]+(?=([,;\s])|$)(?:\1[A-Za-z0-9:=_\/\\.\\?]+)*$

目前它只允許在字符串具有一種特殊字符時進行匹配,但我需要它來匹配字符串之間的多種類型,如下所示: https ://regex101.com/r/i9BF6X/1

鑒於您提供的四個示例,我對問題的理解是分隔符(逗號和分號)可以在同一個匹配項(如第三個示例中)中找到,當且僅當它們沒有將相同的兩個分隔網址(如第 4 個示例)。

一種選擇可能是使用以下正則表達式:

^https:\/(\/[\w\.]+)+( *(;|,) *https:\/(\/[\w\.]+)+)+

解釋:

  • ^ : 字符串開頭
  • https:\/(\/[\w\.]+)+ : 第一個網址
    • https:\/ : https:/
    • (\/[\w\.]+)+ :斜線序列以及字母數字字符和點的組合
  • ( *(;|,) *https:\/(\/[\w\.]+)+)+ :“分隔符 + url”的序列
    • *(;|,) * : 可選空格 + 逗號或分號 + 可選空格
    • https:\/ : https:/
    • (\/[\w\.]+)+ :斜線序列和字母數字組合
  • $ : 字符串結尾

在這里試試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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