【问题标题】:Javascript Regex I'm struggling with我正在努力解决的 Javascript 正则表达式
【发布时间】:2013-03-14 21:33:42
【问题描述】:

诚然,我不是一个正则表达式的人,但通常我可以解决一些问题。这个让我难过...

我需要匹配并替换一个大于 str (>>) 且具有可选前导空格的 double。我知道这不起作用,但类似于...

/\s\s+[>>]/

但这显然不好。

不胜感激。多年来,这个网站对我来说一直是一个了不起的资源,我不敢相信我现在只能发布一些东西,所以它表明即使是像我这样的傻瓜也能够在不打扰人们的情况下受益......直到现在:) 提前致谢。

【问题讨论】:

  • 如果找到的话,除了 >> 之外,您希望它替换可选的前导空格吗?

标签: javascript regex string-matching


【解决方案1】:

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

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

【讨论】:

  • 你可以只使用 />>/ 但我想上面的正则表达式使替换工作更容易。
【解决方案2】:

如果您希望空间是可选的,那么您可以简单地这样做:

/>>/

您可以将其用作带有g 修饰符的替换模式:

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

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

/^\s?>>$/

【讨论】:

  • 或者只是 '>>' 用于简单的字符串替换
  • @WouterJ 如果你想做多个替换,你必须使用正则表达式:myString.replace(/>>/g, '')
  • 哦?我认为g 修饰符仅在匹配时有用,而不是在替换时有用。 (在 PHP 中,默认情况下所有替换都是全局的)
  • 感谢dystroy -- /\s?>>$/ 最终成为赢家(没有插入符号,因为该模式可能没有明确位于字符串的开头)。现在进行测试,似乎工作正常。谢谢!
【解决方案3】:

分解你的例子:

  1. \s 将匹配任何空白字符
  2. \s+ 将匹配一个或多个空白字符
  3. [>>] 将匹配一个 >(请参阅下文)

因此,您的表达式将匹配>,前面至少有两个空格字符。

如果你想匹配零个或多个,你必须使用*; fex\s*.

方括号用于表示字符集,将匹配该集中的任何字符; fex [abc] 将匹配 a、b 或 c,但一次只能匹配一个字符。

正则表达式中的单个字符将匹配该字符; fex > 将匹配一个大于号。

将它们放在一起,我们会为您的情况得到以下正则表达式:

/\s*>>/

【讨论】:

    【解决方案4】:

    这应该与可选空间一起使用。

    /\s{0,}>>/g
    

    访问link 以测试匹配项。

    【讨论】:

      【解决方案5】:

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

      / *>>/
      

      如果您希望它匹配 0 或 1 个前导空格字符:

      / ?>>/
      

      【讨论】:

      • + 表示一个或多个,使用? 表示零或一个
      【解决方案6】:

      使用这个:

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

      【讨论】:

        【解决方案7】:

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

        /\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"
        

        【讨论】:

        • 或者只是>>
        猜你喜欢
        • 1970-01-01
        • 2021-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多