Javascript:正则表达式代码不会执行
Javascript: Regex code will not execute
在我开始之前,我只想说我是正则表达式的新手,所以请对我温柔一点。任何关于正则表达式的评论将不胜感激。
我写了下面的代码
var str = "<blah blah more <b>test</b>>";
var reg1 = "<(?!b>)(?!/b>)";
str = str.replace(new RegExp(reg1), "<");
var reg2 = ">(?<!b>)(?<!/b>)";
str = str.replace(new RegExp(reg2), ">");
alert(str);
我已经使用 http://regexr.com?2toe2 检查了正则表达式,它做了我想要的,即匹配任何<或>,但前提是它们不是 html 标签。"我暂时只报道了。
现在,如果运行此代码,则永远不会执行警报 http://jsfiddle.net/ashburlaczenko/JdATY/9/。我在第一次替换后放置了一个警报,该警报显示,因此错误处于第二阶段。
谁能帮我?请记住,这些正则表达式是我的第一次尝试。
提前谢谢你。
编辑:
<blah blah more <b>test</b>><another <b>blah</b> blah <b>test</b>>
应该成为
<blah blah more <b>test</b>><another <b>blah</b> blah <b>test</b>>
希望这更清楚。
JavaScript 不支持正则表达式中的后视断言。 你可以模仿它,在这篇博文的帮助下,但它仍然不是那么好。
function escapeHtml($0, $1, $2, $3)
{
var result = $1 == '<' ? '<' + $2 + $3 : $1 + $2 + '>';
return result;
}
str = str.replace(/([<>])([^<>]*?)('1)/g, escapeHtml);
str = str.replace(/^([^<]*?)>/, '$1>');
str = str.replace(/<([^>]*?)$/, '<$1');
这个适用于给出的例子。
第一个替换执行以下操作:
- 它寻找
<
或>
的重复,它们之间没有<
或>
,例如<...<
或>...>
.
第一个括号是 $ - 1,中间的文本是 $2,最后一个括号是 $3。
- 如果 $1 是<,则 $1 被转义,否则 $3 被转义。
如果第二个替换发生在字符串开头附近,并且前面没有<
,则第二个替换>
转义。
如果第三个替换发生在字符串末尾附近,后面没有>
,则<
第三个替换进行转义。
相关文章:
- 有没有一种方法可以通过只引用JavaScript来执行代码
- jQuery在类更改时执行代码
- 如果此代码运行,请执行代码
- Javascript等待ajax成功后再执行代码
- 如何在onclick事件执行代码时在ImageButton上设置加载gif
- php,如果我点击按钮程序重新加载页面,并且从不继续执行代码
- Javascript渲染.如何编写Javascript;t在函数调用结束之前继续执行代码
- 无法让 jQuery 以正确的顺序执行代码
- ReactJS:在带有 ajax 调用的 .map() 语句完成后执行代码
- 从一个文本框执行代码,并在另一个文本框中以 HTML 显示输出
- 自执行代码中的“this”
- 为什么Javascript不按顺序执行代码
- 如何在javascript中连续执行代码
- 加载所有图像后执行代码
- 按下多个按钮时执行代码
- 如何在检索到数据后使用drawCallback执行代码
- 等待promise解析后再执行代码
- jQuery没有为具有新id的新元素执行代码
- 如何在客户端Collection增长时立即反应性地执行代码
- 如何将变量表达式转换为可执行代码(而不是替换值)