當我嘗試調用crossUI(一個js框架)的函數來rtrim文本內容是grep通過jQuery,Firefox和Chrome會遇到繁忙。 我在源代碼中發現這個正則表達式阻止了瀏覽器。 我試過/[\s\uFEFF\xA0]+$/
,它的工作原理。 爲什麼/(\s|\uFEFF|\xA0)+$/
卡住了?他們之間有什麼內在的不同?
$('body').text().replace(/(\s|\uFEFF|\xA0)+$/, "");
alert('pass');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div>
<div> </div>
<div>a</div>
</div>
那麼,方括號之一是一個字符類,其中'|'包含兩次...所以它也將刪除所有垂直條。 – Xufox
@Xufox Thx,我修復了代碼 – Junyo
這似乎是[災難性回溯]的另一種情況(http://www.regular-expressions.info/catastrophic.html)。這也可以通過RegEx的簡單示例看到:['((::\s|\s)+$/'](https://regex101.com/r/fM1lY7/1)。 – Xufox