var url = 'https://mp.weixin.qq.com/s?__biz=MzAxNjczMTQxMA==&mid=504131096&idx=1&sn=c2fe41152807821b7916fa9539a0cf87&scene=1&srcid=0718JR98ETFngTl6mDsNRfhK&key=77421cf58af4a65374324bd2f16d7fdd913230b5ab4bd48a72759cc99919893795265ff20c0c8a79c676e636f789899c&ascene=0&uin=MjAzOTExMTUxMg%3D%3D&devicetype=iMac15%2C1+OSX+OSX+10.11.5+build(15F34)&version=11020201&pass_ticket=kA76WNrCKCEZ3JyEii3tYs88BCmLEM%2FI4LPD%2FtHBzoPjYzI9t7seUadtUUVQ9677';
var reg = /^(http(s)?:\/\/)?(([\w\.]+)\.(?:com|cn|love|net|com\.cn|org)(\/|#|!|%|\w|\d|&|\?|-|=|~|\.|\+)*)$/;
url.match(reg);
我想測試一個字符串是否有效URL,但匹配語句會導致進程崩潰! - 瀏覽器或iOS應用程序,以後不會迴應,CPU一直是90%+,可能是無限循環? 我的reg有什麼不對或者這是一個正則表達式的BUG?這是一個正則表達式BUG嗎?
我測試了JavaScript(http://regexr.com/),節點和iOS,它們返回超時或無響應(崩潰)。
有一點是肯定的:問題是災難性的回溯。 '(\/|#|!|%| \ w | \ d |&| \?| - | = |〜| \。| \ +)*'組正在殺死它,替換爲一個字符類 - '[ !\ /#%\ W&\ - ?=〜+] *'。 –
http://www.regular-expressions.info/catastrophic.html – daveoncode