Javascript 不匹配用引号括起来的 str

标签 javascript regex replace quotes lookbehind

我正在用 javascript 编写一个正则表达式来替换空格except,当:

  1. 一些特定的语法是的空白
  2. 用单引号和双引号括起来(排除引号内的转义引号)

现在,我有很大一部分工作。它匹配所有在空格前面没有特定语法的模式,但是,我坚持使用引号部分。

return str.replace(/(function|new|return|var)?\s/g, function($0, $1) {
    return $1 ? $0 : '';
});

我已经做了很多测试,但就是想不通。提前致谢。

最佳答案

您可以使用:

var str = "foo  \"b a \\\" r\" new y 'l o l' foo lol; var x = new 'fo \\' o' ";

var result = str.replace(/(function|new|return|var)?\s+(?=(?:[^\\"']|\\.)*(?:(?:"(?:[^\\"]|\\.)*"|'(?:[^\\']|\\.)*'))*(?:[^\\"']|\\.)*$)/gm,
function($0, $1) { return $1 ? $0 : ''; });

参见 http://jsfiddle.net/qCeC4/

Perl /x 形式的前瞻部分:

s/
\s+
(?=
    (?:[^\\"']|\\.)*
    (?:
        (?:
            "(?:[^\\"]|\\.)*"
            |
            '(?:[^\\']|\\.)*'
        )
    )*
    (?:[^\\"']|\\.)*$
)
//xmg;

注意:正如我之前所说,这不是解析 JS 的好方法,并且会在评论、正则表达式引用以及谁知道还有什么时中断。

注意 2: 忘记补充一点,这仅适用于“有效”引用,所有引用都必须关闭。

关于Javascript 不匹配用引号括起来的 str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6623493/

相关文章:

javascript - string.split ('/' )没有给出正确的数组

python - Python 中 len 函数如何替换文本

Python 列表和 foreach 访问(在内置列表中查找/替换)

javascript - 添加到 JS 脚本中时,iMacros 脚本无法正确循环

javascript - 在.map呈现的元素中仅切换1个元素

javascript - 单击 DIV 时如何切换 UL 列表?

regex - 匹配字符列表中的 PL/SQL 正则表达式破折号和括号

Javascript将正则表达式存储在变量中

javascript - 特定模式的 RegEx,不包括 URL

javascript - 如何用它的值替换字符串中的表达式?