首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript regex:只在字符之间替换连字符(而不是空格)

Javascript regex:只在字符之间替换连字符(而不是空格)
EN

Stack Overflow用户
提问于 2018-05-28 10:00:48
回答 3查看 263关注 0票数 2

我想替换字符串中两个字符之间的连字符。这两个字符可以是一个空格以外的任何东西。

代码语言:javascript
复制
string.replace(/regex/g, '');

所以

  • 狗猫:狗猫
  • 猫狗:没有变化
  • 1:1: 11
  • 1-1:未变
  • $-$:$$
  • $-$:不变
  • ^-^:^^
  • ^-^:不变
  • 等等。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-28 10:03:36

您可以使用这个regex替换:

代码语言:javascript
复制
str = str.replace(/(\S)-(\S)/g, '$1$2'); 

RegEx演示

在这里,(\S)-(\S)匹配一个非空格字符,后面是连字符,然后是另一个非空格字符。我们还在组中捕获两个相邻字符,然后在替换时将$1$2放回。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-05-28 10:07:21

试试这个regex:"dog-cat".replace(/(?=\S)(-)(?=\S)/g, '')

票数 0
EN

Stack Overflow用户

发布于 2018-05-28 11:08:19

若要删除非空白字符之间的所有-字符,应使用

代码语言:javascript
复制
.replace(/(\S)-(?=\S)/g, '$1')

regex演示

这里,

  • (\S) -机器并将任何非空白字符捕获到第1组中。
  • - -a连字符
  • (?=\S) -(一个积极的展望,确保)在连字符之后,必须有一个字符,而不是一个空格。没有使用这个字符,即regex索引就在它的前面,允许将该字符与下一个迭代匹配(因为g全局修饰符将允许匹配字符串中所有正则表达式的出现)。

JS演示:

代码语言:javascript
复制
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'));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50563769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档