JavaScript正则表达式:不是以

JavaScript正则表达式:不是以,javascript,regex,replace,Javascript,Regex,Replace,我想替换所有不以“”开头且不以“”结尾的字符串 假设我想找到新行字符并用“”替换它们。我可以得到“不跟在后面”部分: var revisedHtml=html.replace(/[\n](?![])/g,“”; 但我不知道前面的“不开始”部分 有什么帮助吗?:) 为什么不反过来做呢。查找blah blahanother formattedend”中包含的所有子字符串; var output = s.replace(/(<pre>[\s\S]*?<\/pre>)|\n/g

我想替换所有不以“
”开头且不以“
”结尾的字符串

假设我想找到新行字符并用“

”替换它们。我可以得到“不跟在后面”部分:

var revisedHtml=html.replace(/[\n](?![])/g,“

”;

但我不知道前面的“不开始”部分


有什么帮助吗?:)

为什么不反过来做呢。查找
blah blahanother formattedend”中包含的所有子字符串;
var output = s.replace(/(<pre>[\s\S]*?<\/pre>)|\n/g, function($0, $1){
    return $1 ? $1 : '<p/>';
});
变量rgx=/.*?/g var非限制=s.分割(rgx); 对于(非限制条件下的var idx) 警报(非限制[idx]);
为什么不做相反的操作。查找
blah blahanother formattedend”中包含的所有子字符串;
var output = s.replace(/(<pre>[\s\S]*?<\/pre>)|\n/g, function($0, $1){
    return $1 ? $1 : '<p/>';
});
变量rgx=/.*?/g var非限制=s.分割(rgx); 对于(非限制条件下的var idx) 警报(非限制[idx]);
以下是Steve Levithan的第一个理论如何应用于您的问题:

var output=s.replace(/([\s\s]*?)|\n/g,函数($0,$1){
返回$1?$1:“

”; });

当它到达一个
元素时,它捕获整个内容并将其插回到输出中。它从未真正看到元素中的新行,只是将它们与所有其他内容一起吞噬。因此,当正则表达式中的
\n
与换行符匹配时,您知道它不在
元素中,应该用

替换

但不要错误地将此技术视为黑客或解决方法;即使有lookbehind,我也会推荐这种方法。使用lookaround方法,正则表达式必须检查每一个换行符,并每次应用lookaround,以查看是否应该替换它。这是它必须做的大量不必要的工作,加上正则表达式要复杂得多,不易维护


和往常一样,在HTML上使用正则表达式时,我忽略了许多可能影响结果的因素,如SGML注释、CDATA节、属性值中的尖括号等。您必须确定在您的情况下必须处理这些因素中的哪些因素,以及哪些因素可以忽略。在使用正则表达式处理HTML时,没有通用的解决方案。

以下是Steve Levithan的第一个解决方案如何应用于您的问题:

var output=s.replace(/([\s\s]*?)|\n/g,函数($0,$1){
返回$1?$1:“

”; });

当它到达一个
元素时,它捕获整个内容并将其插回到输出中。它从未真正看到元素中的新行,只是将它们与所有其他内容一起吞噬。因此,当正则表达式中的
\n
与换行符匹配时,您知道它不在
元素中,应该用

替换

但不要错误地将此技术视为黑客或解决方法;即使有lookbehind,我也会推荐这种方法。使用lookaround方法,正则表达式必须检查每一个换行符,并每次应用lookaround,以查看是否应该替换它。这是它必须做的大量不必要的工作,加上正则表达式要复杂得多,不易维护


和往常一样,在HTML上使用正则表达式时,我忽略了许多可能影响结果的因素,如SGML注释、CDATA节、属性值中的尖括号等。您必须确定在您的情况下必须处理这些因素中的哪些因素,以及哪些因素可以忽略。当涉及到用正则表达式处理HTML时,没有通用的解决方案。

Pssh,你知道你有关于吗?您是否考虑过注册您的帐户?:)我很想去,但是互联网已经把我弄到手了。我必须小心。你真的不应该尝试用正则表达式解析HTML。最近有一个问题非常彻底地回答了这个问题,有人有这个链接吗?我同意@indeinvader。使用正则表达式解析HTML从来都不是一个好主意,即使在这种情况下也是如此。看,Pssh,你知道你有关于?您是否考虑过注册您的帐户?:)我很想去,但是互联网已经把我弄到手了。我必须小心。你真的不应该尝试用正则表达式解析HTML。最近有一个问题非常彻底地回答了这个问题,有人有这个链接吗?我同意@indeinvader。使用正则表达式解析HTML从来都不是一个好主意,即使在这种情况下也是如此。看见
var output = s.replace(/(<pre>[\s\S]*?<\/pre>)|\n/g, function($0, $1){
    return $1 ? $1 : '<p/>';
});