我想替换字符串中2个字符之间的连字符。这2个字符可以是任何,但只是空格。
string.replace(/regex/g, '');
所以
答案 0 :(得分: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);
答案 1 :(得分:0)
试试这个正则表达式:"dog-cat".replace(/(?=\S)(-)(?=\S)/g, '')
答案 2 :(得分:0)
要删除非空白字符之间的所有-
个字符,您应该使用
.replace(/(\S)-(?=\S)/g, '$1')
请参阅regex demo。
下面,
(\S)
- 匹配并将任何非空白字符捕获到第1组-
- 连字符(?=\S)
- (一个确定的正面预测)在连字符之后,必须有一个除空格之外的字符。不消耗此char,即正则表达式索引保持在它之前,允许将该char与下一次迭代匹配(因为g
全局修饰符将允许匹配字符串中所有出现的正则表达式模式)。JS演示:
var rx = /(\S)-(?=\S)/g;
var s = "dog-cat\ndog - cat\n1-1\n1 - 1\n$-$\n$ - $\n^-^\n^ - ^\n1-1-1-1";
console.log(s.replace(rx, '$1'));