当前位置: 首页 > 知识库问答 >
问题:

用正则表达式替换多个字符

汲睿
2023-03-14

我有一根绳子:

var str = '#this #is____#a test###__'

我想将所有字符(#,)替换为(#),因此例外的输出是:

'#this #is#a test#'

注意:我不知道字符串中有多少(#)或(#)序列

我尝试的是:

我试着写:

var str = '#this #is__ __#a test###__'
str = str.replace(/[#_]/g,'#')
alert(str)

但结果是:

#this #is## ###a test#####

我的在线尝试

我尝试将(*)用于序列,但没有成功:

var str = '#this #is__ __#a test###__'
str = str.replace(/[#_]*/g,'#')
alert(str)

那么我如何才能得到我的例外输出?

共有3个答案

葛玉堂
2023-03-14

您应该使用匹配上一组的一个或多个匹配项。

var str = '#this #is__ __#a test###__'
str = str.replace(/[#_]+/g,'#')
alert(str)
轩辕晔
2023-03-14

正则表达式将任何匹配字符的单个实例替换为指定的字符,即#。您需要添加修饰符,告诉它应该替换任意数量的连续匹配字符(,#),而不是单独替换每个字符<代码>修饰符意味着一次匹配一个或多个指定图案。您可以从本页阅读有关修改器的更多信息:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

var str = '#this #is__ __#a test###__';
var formattedStr = str.replace(/[#_,]+/g, '#');
console.log( formattedStr );
於乐语
2023-03-14

一个编写良好的正则表达式可以很容易地处理您的问题。引用莫希特的答案,有一个起点:

var str = '#this #is__ __#a test###__';
var formattedStr = str.replace(/[#_,]+/g, '#');
console.log( formattedStr );

第2行:
将替换方法在str上的结果放入formattedStr中。
替换是如何工作的?第一个参数是字符串或正则表达式<注意:Javascripts中的RegExp是RegExp类型的对象,而不是字符串。这么写

/yourRegex/

或者

New RegExp('/yourRegex/')

是等价的语法。现在我们来讨论这个特殊的正则表达式本身
前面和后面的斜线用于环绕图案,结尾的g表示“全局”——第一场比赛后不要停止<方括号描述了一组字符,可以提供这些字符来匹配模式,而符号表示“该组中的一个或多个”<基本上,####会匹配,但也会匹配,因为#和#属于同一组
通过使用(#|))给出首选行为
这意味着“#或,一旦找到一个,继续期待更多或选择的模式”<所以uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
另一个问题是不知道如何用u或#替换找到的模式<幸运的是,使用括号可以让我们使用一种叫做捕获组的东西。基本上,您可以存储在临时变量中找到的任何模式,这些模式可以在替换模式中使用
调用它们很容易,将$定位到匹配(模式)的位置
/(foo)textnotgetting(bar)captured(baz)/例如,将通过以下方式填充捕获组“变量”:

$1 = foo
$2 = bar
$3 = baz

在我们的例子中,我们只想用第一次出现的字符替换1个字符,并且符号不包含在括号中<所以我们可以简单地

str.replace("/(#|_)+/g", "$1");

为了让它工作。祝你愉快!

 类似资料:
  • 我正在尝试编写一个字符串替换方法,它可以工作,但是在同一个字符串上使用多个替换方法看起来很糟糕。我很确定我可以在这里使用正则表达式。 我想只使用1替换()或替换所有()方法。简而言之,尝试构造一个正则表达式来替换这些字符,#*

  • 问题内容: 我需要替换字符串的一部分。我浏览了Python文档并发现了re.sub。 我期望这能打印,而不是“酒吧”。 谁能告诉我我做错了什么? 问题答案: 除了捕获要 替换 的零件外,您还可以捕获要 保留 的零件,然后使用引用对其进行引用以将它们包括在替换字符串中。 尝试以下方法: 另外,假设这是HTML,则应考虑使用HTML解析器来执行此任务,例如Beautiful Soup 。

  • 通过好奇心,有没有办法用Java Stream编写它?

  • Change is inevitable, except from vending machines. — Robert C. Gallagher Puppet 的 regsubst 函数提供了一种处理文本的简单方法, 用于在字符串中查找和替换,或者从字符串提取匹配的模式。 例如,我们通常需要对从 facter 或者从外部程序获得的数据做这样的处理。 在本例中将会看到如何使用 regsubst 提

  • 问题内容: 我有这个字符串: 现在,我想在每个数字之前添加String num:。 因此结果必须是: 这也必须工作: 用于搜索数字的正则表达式是:[0-9]+ 但是我想用num:+ [匹配的子字符串]替换匹配的子字符串。 我现在写了一个带有数字的示例,但另一个示例可以是:在每个电子邮件地址之前添加 ·Email found·: 问题答案: 利用分组。您可以使用括号(并)定义组,并通过组索引$n在哪

  • 我想使用Gson将字符串转换为Foo对象: 下面是我的正则表达式: 如何使用此正则表达式将所有,.和替换为,,而不更改JSON中的键和值?