Javascript 正则表达式:仅替换字符之间的连字符(不是空格)



我想替换字符串中 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'));

相关内容

最新更新