gpt4 book ai didi

javascript - 是否可以结合这两个正则表达式或改进我的代码?

转载 作者:行者123 更新时间:2023-11-30 10:29:17 26 4
gpt4 key购买 nike

我想知道是否有一种方法可以将下面的这两个正则表达式结合起来,或者是否可以通过另一种方式将我的两个任务结合起来。

1) /(<\/[a-z]>|<[a-z]*>)/g
2) /\s{2,}/g

具体来说,它们是用来替换这个的:

This is <b>a test</b> and this <i> is also a test</i>

进入这个:

This is <b> a test </b> and this <i> is also a test </i>

第一个正则表达式用于在每个开始和结束标记前后添加一个空格,第二个正则表达式用于匹配要删除的两个或多个空格字符的每次出现。

这是代码

var inputString = 'This is <b>a test</b> and this <i> is also a test</i>',
spacedTags = inputString.replace(/(<\/[a-z]>|<[a-z]*>)/g, ' $1 '),
sanitizedSting = spacedTags.replace(/\s{2,}/g, ' ')

console.log(sanitizedSting);

jsfiddle .

我知道这些可以使用 DOM 操作来完成,这可能会更快,但我试图避免这种情况

谢谢

最佳答案

如果您寻找尾随和前面的空格,然后使用内部捕获组作为替换值,您可以实现类似的效果。

var inputString = 'This is <b>a test</b> and this <i> is also a test</i>',
spacedTags = inputString.replace(/(\s*(<\/[a-z]>|<[a-z]*>)\s*)/g, ' $2 ');

console.log(spacedTags);

JS Fiddle

这会查找任何与开始或结束标记相匹配的内容,该标记可选地由空格包围。然后它使用内部匹配作为替换,并在两侧添加空格。

不过,这两种实现方式总是在任何结束标记之后留下尾随空格。 "</i> "

我没有研究由此带来的性能变化,但它试图解决一个正则表达式的问题。

关于javascript - 是否可以结合这两个正则表达式或改进我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17903560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com