Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过正则表达式制作降价标题符号_Javascript_Regex_Replace - Fatal编程技术网

Javascript 通过正则表达式制作降价标题符号

Javascript 通过正则表达式制作降价标题符号,javascript,regex,replace,Javascript,Regex,Replace,我正在尝试建立一个个人降价编辑器。受库的源代码启发,我几乎完成了任务,但奇怪的是,有些代码并没有按预期工作。以下关于标题定义的部分是其中一个让我陷入麻烦的部分: 。替换(/^(#))[\t]*(.+?)[\t]*\n/gm,“$2”) 在中测试时,正则表达式似乎很好。有没有线索说明它为什么不能按预期工作?是否存在浏览器版本问题(我现在正在使用FF 36.0.1) 编辑。这是产生问题的最小示例 ` 结果 编译! 输入代码。。。 var sourceContent、resultContent; 函

我正在尝试建立一个个人降价编辑器。受库的源代码启发,我几乎完成了任务,但奇怪的是,有些代码并没有按预期工作。以下关于标题定义的部分是其中一个让我陷入麻烦的部分:

。替换(/^(#))[\t]*(.+?)[\t]*\n/gm,“$2”)

在中测试时,正则表达式似乎很好。有没有线索说明它为什么不能按预期工作?是否存在浏览器版本问题(我现在正在使用FF 36.0.1)

编辑。这是产生问题的最小示例 `


结果
编译!
输入代码。。。
var sourceContent、resultContent;
函数编译(){
sourceContent=document.getElementById(“source”).innerHTML;
resultContent=sourceContent.replace(/^(#))[\t]*(.+?)[\t]*\n+/gm,“$1”);
document.getElementById(“结果”).innerHTML=resultContent;
}

`由于您使用的是可编辑的
div
innerHTML
不包含新行,而是

,这就是您的正则表达式不适合的原因。您可以使用文本区域:


结果
编译!
输入代码。。。
var sourceContent、resultContent;
函数编译(){
sourceContent=document.getElementById(“source”).value;
resultContent=sourceContent.replace(/^(?:#))\s*(.+?)[\t]*$/gm,“$1”);
document.getElementById(“结果”).innerHTML=resultContent;
}

我无法让它在regex101上工作,你能发布一个示例输入的示例吗?是的,它正在工作。但是你也可以在这里使用^(\\\+)(\w+)\s+)模式,你应该提供一个@thomasayob,在regex101中添加了一个工作示例的链接,实际上我不知道regex有能力共享链接,例如,你的示例告诉我这是可能的,谢谢:)谢谢你的回复,它对我仍然不起作用。。。没有错误,只是不匹配。。。如果是浏览器不兼容,你知道一个更通用的正则表达式是否也适用于较旧的浏览器吗?我测试了答案中的代码,它给出的JS版本等于1.5,然后将firefox更新为v。奇怪的是,问题依然存在,JS版本仍然等于1.5。问题是,如果这行代码没有问题,它与我的其余代码有关,但它也不正确,就像我使用代码
。替换(/(#| |))(?=\S)([^\r]*?\S)\1/g,“$2”)
一样,它工作得很好,尽管它没有达到我想要的效果。所以代码的其余部分是正确的,问题在于所使用的正则表达式。如果这有助于我生活在Linux中。我几乎要放弃了,现在我将你的代码添加到我的页面末尾,令人惊讶的是,它居然成功了(在将“\$1”修改为“\$1”后,更具体地说)!但随后再次将代码添加到用于编译标记源代码的函数中,再次失败。代码本身并没有错,因为它适用于某些正则表达式,但不适用于其他一些正则表达式。。。这不是因为浏览器和/或JS版本。。。我觉得很奇怪…非常感谢,你救了我一周!我希望我能做的不仅仅是接受你的回答。圣诞快乐:)@owari你可以:这叫做赏金;)
<!DOCTYPE html>
<html>
    <body>
    <div id="result" style="display:inline-block; width:45%; height:85vh; float:left; border:1px solid #555555;">Result</div>
    <button type="button"  onclick="compile();">Compile !</button>
    <div id="source" style="display:inline-block; width:45%; height:85vh; border:1px solid #555555;" contenteditable="true">Enter Code ...</div>    

        <script>
        var sourceContent, resultContent;
        function compile(){
            sourceContent=document.getElementById("source").innerHTML;
            resultContent=sourceContent.replace(/^(#)[ \t]*(.+?)[ \t]*\n+/gm,"<h1>$1</h1>");
            document.getElementById("result").innerHTML=resultContent;
        }
        </script>
    </body>
</html>


<!--
tested with:

#title 1
ok
# title 2
ok
#  title 3 #
ok
-->