簡體   English   中英

正則表達式捕獲字符集,但不捕獲某些特定字符

[英]Regex capture character set but not some specific characters

Javascript正則表達式

我想捕獲此集合中的所有字符

([-A-Z0-9+&@#\/%=~._|\?]{2,})

但我不想結束~~ || ##被捕獲。

例如:

It@was@022342@whate@~f56@|fdsdfw&~~

應該導致

It@was@022342@whate@~f56@|fdsdfw&

你去了:

re = /([-A-Z0-9+&@#\/%=~._|\?]{2,}?)(?:(~~|##|\|\|)+)/i

工作示例:

 re = /([-A-Z0-9+&@#\\/%=~._|\\?]{2,}?)(?:(~~|##|\\|\\|)+)/i str = "It@was@022342@whate@~f56@|fdsdfw&~~" console.log(str.match(re)[1]) str = "It@was@022342@whate@~f56@|fdsdfw&##" console.log(str.match(re)[1]) str = "It@was@022342@whate@~f56@|fdsdfw&||" console.log(str.match(re)[1]) str = "It@was@022342@whate@~f56@|fdsdfw&||##" console.log(str.match(re)[1]) str = "It@was@022342@whate@~f56@|fdsdfw&##||" console.log(str.match(re)[1]) 

可能有一種更聰明的方法來執行此操作,但這是一個非常簡單的方法:

([-A-Za-z0-9+&@#\\/%=~._|\\?]{2,}?)(?:~~|\\|\\||##)?$

https://regex101.com/r/E9htiV/1

截至上述評論,我想您要刪除~~ || ##從字符串str ,您可以像這樣簡單地進行操作:

str.replace(/(~~|\|\||##)/g, "");

或者,如果您只想從字符串的末尾刪除

str.replace(/(~~|\|\||##)+$/, "");

這是你想要的?

str.replace(/[\|#~]*$/,'');

例如:

var str = "It@was@022342@whate@~f56@|fdsdfw&~~";
str.replace(/[\|#~]*$/,'');

"It@was@022342@whate@~f56@|fdsdfw&"

如果~#|任意組合,也可以使用 在末尾

var str = "It@was@022342@whate@~f56@|fdsdfw&~#|"
str.replace(/[\|#~]*$/,'');

"It@was@022342@whate@~f56@|fdsdfw&"

暫無
暫無

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

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