gpt4 book ai didi

javascript - 反转一组相当复杂的正则表达式

转载 作者:行者123 更新时间:2023-11-29 18:11:21 24 4
gpt4 key购买 nike

我对正则表达式有点陌生,我在网上找到的解决方案都没有帮助/有效。

我正在处理 JavaScript 中的单行字符串,它将包含五种类型的混合数据。

  • “#”后跟六个数字/字母(HTML 颜色)(/#....../g)
  • 正斜杠后跟任意几个特定字符 (/\/(\+|\^|\-|#|!\+|_|@|\*|%|&|~)/g)
  • “$”后跟一串字母和一个“|” (/\$([^\|]+)/g)
  • 一个“|”单独 (/\|/g)
  • 不属于任何这些类别的字母数字字符

问题是,我有匹配前四个类别的正则表达式,它们很重要。问题是我需要一个正则表达式,我将使用它来用单个字符(例如“§”)替换所有与前四个正则表达式不匹配的字符。

例子:

这个#00CC00 是绿色的$Courier|和/^mono|spaced

§§§§#00CC00§§§§§§§§§$Courier|§§§§§/^§§§§|§§§§§§

我知道我可能以错误的方式解决了这个问题,我对正则表达式相当陌生。从本质上讲,我如何制作一个表示“与正则表达式 x、y 或 z 没有任何匹配的任何内容”的正则表达式?

感谢您的宝贵时间。

最佳答案

使用这个模式

((#\w{6}|\/[\/\(\+\^\-]|\$\w+\||\|)*).

并替换为 $1§
缺点是您保留的模式必须后跟至少一个字符
Demo

(                   # Capturing Group (1)
( # Capturing Group (2)
# # "#"
\w # <ASCII letter, digit or underscore>
{6} # (repeated {6} times)
| # OR
\/ # "/"
[\/\(\+\^\-] # Character Class [\/\(\+\^\-]
| # OR
\$ # "$"
\w # <ASCII letter, digit or underscore>
+ # (one or more)(greedy)
\| # "|"
| # OR
\| # "|"
) # End of Capturing Group (2)
* # (zero or more)(greedy)
) # End of Capturing Group (1)
. # Any character except line break

从 Regex101 复制的代码

var re = /((#\w{6}|\/[\/\(\+\^\-]|\$\w+\||\|)*)./gm;   
var str = 'This#00CC00 is green$Courier| and /^mono|spaced|\n';
var subst = '$1§';
var result = str.replace(re, subst);

关于javascript - 反转一组相当复杂的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27084450/

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