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')
如果您有特定问题,请共享输入字符串和预期输出。现在,这个问题听起来很普通,因此我的回答可能对你没有多大帮助。