我想替换字符串中 2 个字符之间的连字符。这两个字符可以是空格以外的任何字符。
string.replace(/regex/g, '');
所以
狗- 猫:狗猫
- 狗 - 猫 :不变
- 1-1 : 11
- 1 - 1 :不变
- $-$ : $$ $
- - $ :不变
- ^-^ : ^^
- ^ - ^ :不变
- 等。。。
您可以使用此正则表达式替换:
str = str.replace(/(S)-(S)/g, '$1$2');
正则表达式演示
此处(S)-(S)
匹配一个非空格字符,后跟连字符,后跟另一个非空格字符。我们还在组中捕获两个相邻的角色,然后在替换时我们放回$1$2
。
const regex = /(S)-(S)/g;
const str = `dog-cat
dog - cat
1-1
1 - 1
$-$
$ - $
^-^
^ - ^`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, '$1$2');
console.log(result);
试试这个正则表达式:"dog-cat".replace(/(?=S)(-)(?=S)/g, '')
要删除非空格字符之间的所有-
字符,您应该使用
.replace(/(S)-(?=S)/g, '$1')
请参阅正则表达式演示。
这里
(S)
- 将任何非空格字符处理并捕获到组 1 中-
- 连字符(?=S)
-(积极的展望确保(在连字符之后,必须有一个除空格以外的字符。这个 char 不会被使用,即正则表达式索引保留在它之前,允许将该 char 与下一次迭代匹配(因为全局修饰符将允许匹配字符串中正则表达式模式的所有出现g
(。
JS演示:
var rx = /(S)-(?=S)/g;
var s = "dog-catndog - catn1-1n1 - 1n$-$n$ - $n^-^n^ - ^n1-1-1-1";
console.log(s.replace(rx, '$1'));