【问题标题】:how to write a regex to match a "\n" which is not followed another "\n"?如何编写正则表达式以匹配未跟随另一个“\n”的“\n”?
【发布时间】:2014-04-10 16:24:17
【问题描述】:

仅当“\n”后面没有另一个“\n”时,我才想将“\n”替换为“”(空字符串)。

var text  = "abcdefg
             abcdefg

             1234556
             1234556

             ABCDEFG
             ABCDEFG";

所以,如果我有一个如上的字符串,我想在替换“\n”s 之后变成这样。

"abcdefgabcdefg

 12345561234556

 ABCDEFGABCDEFG";

但是,我不知道如何编写正则表达式来匹配未跟随另一个“\n”的“\n”。

这些是我尝试过的,但它们都匹配“\n”和“\n\n”。

var pattern1 = new RegExp("\\n{1}");
var pattern2 = new RegExp("\\n(?!\\n)");

在这种情况下,谁能帮我写一个正则表达式?

谢谢!

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    您可以匹配以下内容:

    [^\\n](\\n)[^\\n]

    演示:http://regex101.com/r/eP9xD1

    【讨论】:

    • 哦,这正是我需要的!谢谢!
    【解决方案2】:

    您可以使用/([^\n])\n([^\n])/g 并将其替换为\1\2

    用法

    > str = 'abcdefg\nabcdefg\n\n1234556\n1234556\n\nABCDEFG\nABCDEFG';
    > str.replace(/([^\n])\n([^\n])/g, '\1\2');
      "abcdefbcdefg
    
      123455234556
    
      ABCDEFBCDEFG"
    

    REGEX DEMO

    FIDDLE

    【讨论】:

      【解决方案3】:

      您可以使用negative lookahead 匹配\n 后面没有另一个\n

      \n(?!\n)
      

      【讨论】:

        猜你喜欢
        • 2021-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多