regexr.com 对比 regex101.com

regexr.com vs regex101.com

给出这个字符串:

 z;
hh ;d;
;
;
;
12;b
;
bb;b
;;;
;;

这个表达式:

^(?:;+)\R*

我在 regex101.com and regexr.com 中得到了 2 个不同的结果。 不同之处在于 regex101.com 在替换框中的末尾有一个额外的 \n 而 regexr.com 没有

问题:

1) 根据我有限的正则表达式经验,regexr.com 显示的是正确答案,是否正确?

2) 差异是像这些错误还是仅仅是实现上的差异?所以基本上他们都是正确的?

两个正则表达式测试器产生相同的结果。 regexr.com 中缺失的换行符只是一种错觉,由 HTML 元素包含具有 readonly 属性的替换结果导致,使您无法将光标放在换行符上.但是不能仅仅因为你不能将光标放在它上面,并不意味着它不存在。

如果您同时清除正则表达式和替换字段,那么 "text" 字段中的任何内容都会直接进入 "result"。然后在 "text" 字段中写入一行,按回车键插入一个新行。您应该无法在 "result" 区域中找到该换行符。

因此,这只是 regexr.com 的一个怪癖,而不是特定于此特定正则表达式的问题。

如果您希望能够将光标放在上面,请转到浏览器的开发工具,检查 "result" 区域,您会看到它是一个像这样的 textarea 元素:

<div class="result">
    <textarea readonly>
        ...
    </textarea>
</div>

删除单词readonly,您应该可以将光标放在换行符上。


两个正则表达式测试器都是正确的。尽管您使用 \R 在每次匹配后删除了换行符,但结果中的最后一个换行符实际上来自结束行 bb;b 的换行符。由于 bb;b 不匹配,因此不会删除此新行。