正则表达式删除多个连续的“ - ”

时间:2015-06-19 05:17:57

标签: javascript jquery regex

我有两个要求,首先,我想用空值替换文本开头和结尾的“ - ”符号。其次,如果有任何连续的“ - ”符号,则应使用单个“ - ”符号替换它们。

如果可能,请以单一模式提供两种要求的代码。

CODE:

//1.)
// replace more than 1 "-" in b
// Expected Output : -asdas-sadf-asdasd-ju

var a = "--asdas-sadf----asdasd---ju";
a = a.replace(/-{2,}/,"");
//alert(a);

//2.)
// remove last "-" and starting "-" from b that is "das-" - after das needs to be removed
// Expected output : welcome/asasdgrd/asd-ast-yret-das/456

var b = "-welcome/asasdgrd/asd-ast-yret-das-/456"
b = b.replace(/[-$]/,"");
//alert(b);

Fiddler Link:

http://jsfiddle.net/nj5j0yeq/1/

3 个答案:

答案 0 :(得分:1)

您需要使用捕获组。



var s = "--asdas-sadf----asdasd---ju";
alert(s.replace(/^-+|-+$|(-)+/gm, "$1"));




答案 1 :(得分:0)

^-+|-(?!.*?-)|(-){2,}

你可以试试这个。$1。见。演示。

https://regex101.com/r/jV9oV2/8

答案 2 :(得分:0)

您可以检查--的时间,并且可以替换为奇-

var a = "--asdas-sadf----asdasd---ju";
var b= a.split("--").join("-");
var c = b;
var d = c.split("--").join("-");
console.log(d);

或`var res = str.split(/ ^ - + $ |( - )+ /)。join(“”);     的console.log(RES);

`