JavaScript Regex我正在努力

z9smfwbn  于 2023-05-08  发布在  Java
关注(0)|答案(7)|浏览(203)

我承认我不是一个正则表达式的人,但通常我可以找到我的方式周围的东西。这一个让我困惑。。
我需要匹配并替换一个double大于str(>>),它有一个可选的前导空格。我知道这行不通,但一些沿着的...

/\s\s+[>>]/

但这显然不好。
会很感激你的帮助。这个网站多年来一直是我的一个惊人的资源,我不敢相信我现在才开始发布一些东西,所以它表明即使是像我这样的傻瓜也能够受益而不打扰人们。到现在为止:)提前感谢。

nafvub8i

nafvub8i1#

对于字符串中的>>和前导空格,尝试:

/(\s*)(>>){1}/
vm0i2vca

vm0i2vca2#

如果你想让空格是可选的,那么你可以简单地这样做:

/>>/

您可以使用它作为g修饰符的替换模式:

str = str.replace(/>>/g, 'something')

如果你想检查一个字符串是否是>>,前面可能有一些空格,那么使用

/^\s?>>$/
iyfamqjs

iyfamqjs3#

打破你的例子:

  1. \s将匹配任何空白字符
  2. \s+将匹配一个或多个空白字符
  3. [>>]将匹配一个>(请参阅下面的更多内容)
    因此,您的表达式将匹配前面至少有两个空格字符的>
    如果你想匹配零个或多个,你必须使用*; fex \s* .
    方括号用于表示字符集,并将匹配集合中的任何字符; fex [abc]将匹配a、B或c,但一次只能匹配一个字符。
    正则表达式中的单个字符将匹配该字符; fex >将匹配一个大于号。
    将其组合在一起,我们得到以下正则表达式:
/\s*>>/
ttisahbt

ttisahbt4#

如果您希望它匹配无限数量的前导空格字符:

/ *>>/

如果要匹配0或1个前导空格字符:

/ ?>>/
tcomlyy6

tcomlyy65#

使用这个:

str.replace(/\s+>>/g, 'whatever');
p1iqtdky

p1iqtdky6#

这个正则表达式应该可以工作。

/\s*[>]{2}/

这个更干净

/\s*>>/

测试:

var pattern = /\s*>>/;
s1 = "             >>";
s2 = ">>";
s3 = ">> surrounding text";
s4 = "surrounding  >> text";
s5 = "surrounding>>text";

s1.match(pattern);
["             >>"]
s2.match(pattern);
[">>"]
s3.match(pattern);
[">>"]
s4.match(pattern);
["  >>"]
s5.match(pattern);
[">>"]

替换示例

var pattern = /\s*>>/;
var s6 = "    >> surrounding text";
s6.replace(pattern, ">");
"> surrounding text"
ylamdve6

ylamdve67#

这应该与可选空格一起工作。

/\s{0,}>>/g

相关问题