Javascript 在JS中使用RegExp删除特定类型的连续字符

Javascript 在JS中使用RegExp删除特定类型的连续字符,javascript,regex,Javascript,Regex,我需要一个正则表达式来删除特定的连续字符 比如说。我可以用 var filtered = oldString.replace(/[^[\w]\s]|(.)(?=\1)/gi, ""); 如果我需要去掉任何连续字符 我可以用 var filtered = oldString.replace(/[^[\w]\s]|(,|;|\s)(?=\1)/gi, ""); 如果我需要去掉连续的逗号、分号和空格字符 但我真正需要的是使字符串像看起来像 和类似于,,,,,的字符串看起来像一个逗号, 所以我需

我需要一个正则表达式来删除特定的连续字符

比如说。我可以用

var filtered = oldString.replace(/[^[\w]\s]|(.)(?=\1)/gi, ""); 
如果我需要去掉任何连续字符

我可以用

var filtered = oldString.replace(/[^[\w]\s]|(,|;|\s)(?=\1)/gi, ""); 
如果我需要去掉连续的逗号、分号和空格字符

但我真正需要的是使字符串像
看起来像

和类似于
,,,,,的字符串看起来像一个逗号

所以我需要去掉任何类型的连续字符


我该怎么做呢?

似乎您希望匹配与相同模式匹配的字符块,但只保留第一个匹配的字符。使用

.replace(/(\W)\W*/g, '$1')

模式将匹配:

  • (\W)
    -非单词字符(并捕获到组1中,以便替换模式中的
    $1
    反向引用可以还原此字符)
  • \W*
    -0+非单词字符(将从字符串中删除)

请注意,这是一种通用方法,在大多数情况下,应进一步调整模式。

似乎您希望匹配与相同模式匹配的字符块,但只保留第一个匹配的字符。使用

.replace(/(\W)\W*/g, '$1')

模式将匹配:

  • (\W)
    -非单词字符(并捕获到组1中,以便替换模式中的
    $1
    反向引用可以还原此字符)
  • \W*
    -0+非单词字符(将从字符串中删除)

请注意,这是一种通用方法,在大多数情况下,应进一步调整模式。

根据您的问题,我的理解是,您希望将连续出现的一组预定义字符替换为第一个出现的字符。您可以这样做:

([;,])[;,]*(?:[;,\h]*[;,]+)?
  • 匹配任何
    和水平空格
    \h
    即单个空格或制表符
  • 只匹配出现在两者之间的空格
  • 使用捕获组捕获第一个匹配项,即
    ([;,])
  • (?:[;,\h]*[;,]+)?
    是一个非捕获组,允许在两个组之间留有空格
替换为
$1

这将取代
的组合和空格
\h
与第一个空格,即

  • 将更改为
  • 将更改为

根据您的问题,我的理解是,您希望将连续出现的一组预定义字符替换为第一个出现的字符。您可以这样做:

([;,])[;,]*(?:[;,\h]*[;,]+)?
  • 匹配任何
    和水平空格
    \h
    即单个空格或制表符
  • 只匹配出现在两者之间的空格
  • 使用捕获组捕获第一个匹配项,即
    ([;,])
  • (?:[;,\h]*[;,]+)?
    是一个非捕获组,允许在两个组之间留有空格
替换为
$1

这将取代
的组合和空格
\h
与第一个空格,即

  • 将更改为
  • 将更改为

使用
[,;\s]
而不是
\1
如何?请尝试
。替换(/(\W)\W*/g,$1')
如果您有特定问题,请共享输入字符串和预期输出。现在,这个问题听起来很普通,因此我的答案可能对您没有太大帮助。使用
[,;\s]
而不是
\1
怎么样?尝试
。替换(/(\W)\W*/g,$1')
如果您有特定问题,请共享输入字符串和预期输出。现在,这个问题听起来很普通,因此我的回答可能对你没有多大帮助。