Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
Jquery 用正则表达式将换行符包装在P标记中_Jquery_Regex - Fatal编程技术网

Jquery 用正则表达式将换行符包装在P标记中

Jquery 用正则表达式将换行符包装在P标记中,jquery,regex,Jquery,Regex,我正试图找到tinyMCE标签,但从最近两天开始,我就不知道如何解决它。现在,我正努力做到以下几点: 我有一个文本区域,可以用\n或\r(可能)创建新行,因此我必须将所有\n包装在标记中,但有两个条件: 如果新行内容已包装在P标记中,则应跳过它 第一个P标记应该从内容/文本行中删除 以下是我目前能做的: <textarea id="t"><p>replace P from the very first line until next new line comes<

我正试图找到tinyMCE标签,但从最近两天开始,我就不知道如何解决它。现在,我正努力做到以下几点:

我有一个文本区域,可以用\n或\r(可能)创建新行,因此我必须将所有\n包装在标记中,但有两个条件:

  • 如果新行内容已包装在P标记中,则应跳过它
  • 第一个P标记应该从内容/文本行中删除
  • 以下是我目前能做的:

     <textarea id="t"><p>replace P from the very first line until next new line comes</p>
    
     <p>this should be skipped</p>
     all lines not wrapped in P should be wrapped and the ones already wrapped in P should be skipped
    
     <p>already wrapped so skip it</p>
     </textarea>
    
    从第一行开始替换p,直到下一行出现

    这应该跳过

    所有没有用P包装的行都应该被包装,已经用P包装的行应该被跳过 已经包装好了,跳过它吧

    javascript:

     var content = $('#t').val().replace(/\n{2,}/g, '<p></p>');
     alert(content);
    
    var content=$('#t').val().replace(/\n{2,}/g,

    '); 警报(内容);
    它产生以下结果:

     <p>replace P from the very first line until next new line comes</p><p></p><p>this should be skipped</p> all lines not wrapped in P should be  wrapped and the ones already wrapped in P should be skipped<p></p><p>already wrapped so skipe it</p>
    
    从第一行开始替换p,直到下一个新行出现

    这应该跳过

    所有没有用p包装的行都应该被包装,已经用p包装的行应该被跳过,所以跳过它

    以下是JSFIDLE:

    这应该行得通。我使用负前瞻
    (?!)
    查找不以
    开头、不以
    结尾的行,并使用捕获组捕获行的内容
    (.*)
    ,然后将其替换为包装的捕获行
    $1
    ,其中
    $1
    表示第一个捕获组

    我还使用了多行标志
    m
    ,以便
    ^
    $
    匹配行的开始和结束

    var content = $('#t').val().replace(/^(?!<p>)(.*)(?!<\/p>)$/gm, "<p>$1</p>").replace(/<p>(.*)<\/p>/, "$1");
    alert(content);
    
    var content=$('#t').val()。替换(/^(?);
    警报(内容);
    
    试试Thank@WiktorStribiżew。。但是,它已经完全删除了第一行,它应该只删除P标记,但保留文本行。。第二,空的空行也应该被包装起来。又来了小提琴谢谢你的时间。。regardsIt显然是html解析器的工作,而不是正则表达式。谢谢@matt。。它在某种程度上起作用,但是它不会从第一个元素中删除
    标记。我们可能需要运行另一个正则表达式来删除第一个
    标记的出现?很抱歉,我错过了这个要求。我对答案进行了编辑,添加了一个额外的正则表达式来处理从第一行删除
    p
    标记的问题。