给予这个字符串,
z;
hh ;d;
;
;
;
12;b
;
bb;b
;;;
;;
还有这个表达式
^(?:;+)\R*
我得到两个不同的结果 regex101.com 和 regexr.com. 不同的是,regex101.com在末尾的替换框中多了一个\n,而regexr.com则没有。
的问题。
1)从我有限的regex经验来看,regexr.com显示的是正确的答案,这个正确吗?
2)像这些bug还是仅仅是实现上的差异?所以基本上它们都是正确的?
两个regex测试器产生的结果是一样的。在regexr.com中,缺少的新行只是一种错觉,是由于包含替换结果的HTML元素有一个属性为 readonly
,使你无法将光标放在新的行字符上。但是你不能把光标放在上面,并不意味着它不存在。
如果你同时清除了regex和替换字段,使 "text "字段中的任何内容直接进入 "result"。然后在 "文本 "字段中写上一行,按回车键插入新的一行。在 "结果 "区域应该找不到那个新行字符。
因此, 这只是 regexr.com 的一个怪癖, 并不是这个特定的 regex 所特有的问题.
如果你想把你的光标放在上面, 去你的浏览器的开发工具中, 检查 "结果 "区域, 你会看到它是个 textarea
这样的元素。
<div class="result">
<textarea readonly>
...
</textarea>
</div>
删除这个词 readonly
你应该可以把你的光标放在新的行字符上。
两个regex测试器都是正确的。虽然你在每次匹配后使用 \R
结果中的最后一个新行字符实际上来自于该行结束的新行字符。bb;b
. 由于 bb;b
是不匹配的,这条新线不会被删除。