正则表达式捕获字符集但不是某些特定字符

时间:2017-09-19 23:42:11

标签: javascript regex

Javascript正则表达式

我想要捕获此集中的所有字符

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

但我不希望结束~~ || ##

例如:

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

应该导致了

的上限
It@was@022342@whate@~f56@|fdsdfw&

4 个答案:

答案 0 :(得分:3)

你去了:

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])

答案 1 :(得分:0)

这可能是一种更聪明的方法,但这是一种非常简单的方法:

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

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

答案 2 :(得分:0)

截至上述评论,我认为您要从字符串~~中删除|| ## str,您可以这样做:

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

或者,如果您只想从字符串末尾删除

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

答案 3 :(得分:0)

这是你在找什么?

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&"