Javascript Regex:如何(更好地)优化来自/用于消息的文本

Javascript Regex:如何(更好地)优化来自/用于消息的文本,javascript,php,regex,Javascript,Php,Regex,因为这个问题不包含关于regex的具体问题,而是关于它的设计/方法的更多问题,所以可能需要一些时间来理解需求及其依赖性。我已经尽我所能,使它尽可能容易与此(死链接) 我需要优化其他人正在创建/编辑的消息传递平台中的文本,并且可能需要使用regex进行清理。所有的优化都需要用一个正则表达式来完成,因为这些优化经常发生,而且非常昂贵(或者我在这方面错了吗?)。此外,正则表达式需要与语言无关(至少与Javascript和Php兼容)。最后但并非最不重要的一点是,优化文本不得包含(附加)Html,因为

因为这个问题不包含关于regex的具体问题,而是关于它的设计/方法的更多问题,所以可能需要一些时间来理解需求及其依赖性。我已经尽我所能,使它尽可能容易与此(死链接)


我需要优化其他人正在创建/编辑的消息传递平台中的文本,并且可能需要使用regex进行清理。所有的优化都需要用一个正则表达式来完成,因为这些优化经常发生,而且非常昂贵(或者我在这方面错了吗?)。此外,正则表达式需要与语言无关(至少与Javascript和Php兼容)。最后但并非最不重要的一点是,优化文本不得包含(附加)Html,因为它用于纯文本环境

要求 优化线路

  • 删除单行线
  • 不要删除以两个|无空格结尾的单行(因此允许编辑器强制换行)
  • 不要删除空行(双线分隔符)
  • 不要删除以符号|字符|数字|实体+空格开头的单行(原始列表)
  • 将多个连续的空行(双线分隔符)压缩为一个双线分隔符
优化空间

  • 删除多余的空间
  • 不要删除句子末尾的空格
优化评论

  • 删除单行注释
  • 不要删除尾随注释
总体上

  • 保留Html,不添加Html
中间溶液 到目前为止,我的解决方案是将4个与我的需求“匹配”的正则表达式组合起来,并用一个空格替换:

  • 匹配单行,同时保留空行不变并保留原始列表:
    \n(?!\n |[-\u。○•♥→›>+%\/*~=] |[a-zA-Z_1-9+][\.\124;\)\ 124\:\*]
    (长度取决于我希望支持的几种列表样式类型)
  • 匹配多余的空行:
    (\n+)(=\n\n)
  • 匹配多余的空格:
    +
  • 匹配单行注释(同时忽略尾随注释):
    ^\n?\/\/.+\n
为了使优化变得相当便宜,我将它们与
|
连接到一个可以在Javascript(以及Php)中使用的正则表达式中

r=newregexp(“\n(?!\n |[-\”。○•♥→›>+%\/*~=] |[a-zA-Z|U 1-9+][.:*])|(\n+(=\n\n)|+| ^\n?\/\/.+\n,“gm”);
i=document.getElementById(“输入”).innerHTML;
p=“”;
o=i.替换(r,p);
document.getElementById(“输出”).innerHTML=o;
#输入#输出{宽度:100%;高度:88vh;}
#输入{显示:无;}#输出{边框:无;}

写段落
这是第一段。
有些句子以换行符结尾。
有些人没有,我们需要应付。
这是第二段。
它包含一些不必要的空格。
甚至在一行的末尾。
这是第三段。
有些句子以问号和感叹号结尾。
我希望这对你没问题。是吗?太好了!真的。
保留列表
这是一个无序列表,以负+空格开头:
-这是第一项。
-这是第二项。
-这是第三项。
这是一个无序列表,从实体|符号+空格开始:
•这是第二项。
>这是第三项//仅适用于php
*这是第五项。
这是一个(手动)排序的列表,从字符|数字+实体+空格开始:
1.这是第一项。
b) 这是第二项。
3:这是第三项。
以下是一个数学列表,从运算符开始:
+加上
-减去
%百分比
/分部
*倍增
~z~就像
=相等
这些是(手动)排序的列表,由于它们不以空格结尾,因此不会进行汇总:
1这是第一项。
b这是第二项。
我喜欢第三项。
第一:这很有效。
第二:效果很好。
第三:太好了!
保留HTML
输入文本可能包含。
输出文本必须保留以供进一步处理。
输出不能添加Html,因为它是在纯文本环境中处理的。
我知道这听起来很愚蠢,但事实并非如此。
删除评论
正在删除单行/整行注释。
//来源
//删除单行:https://regex101.com/r/qU1eP8/5 
//删除评论:https://www.perlmonks.org/?node_id=996552 
//测验
//对话框:https://api.sefzig.net/dialog/test/regex/ 
//Jsbin:https://jsbin.com/goromad/edit?output 
//Regex101:https://regex101.com/r/Xz5atA/2 
//Regexr:https://regexr.com/45svm 
谢谢你,regex♥ // 问题解决
~Fin~

您是否有特定的正则表达式问题?@sln是的,我想为所描述的需求找到更好的方法(如果这值得称为“特定的”…)如果你不能有选择地专一,那么你希望有人花大量的时间来分析你的总体设计、方法和方法。你可能想考虑雇用一个承包商。既然你有一个工作解决方案,这对于STACKOPPORD来说也有点偏离主题。你可以考虑在@ SLN中更新我的介绍来反映你。不易理解的评论。