[英]Javascript regex to match more than one type of special characters between URLs
我試圖確保在字符串中只使用兩種類型的特殊字符(分號、逗號或空格)。
有效案例:
例如,這應該匹配,因為它只使用一種特殊字符(分號):
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.