我想匹配字符串中的所有URL,并为此使用正则表达式。在某些字符串上,我遇到了RegEx匹配失败并出现分段错误的情况。这是一个失败的示例:<a href="https://play.google.com/store/apps/details?id=package_name">App link</a>
正则表达式已应用:
.D0.9B.D0.B5.D1.82.D0.BE.D0.BF.D0.B8.D1.81.D1.8C.C2.A0.D1.80.D1.83.D1.81.D1.81.D0.BA.D0.BE.D0.B9.C2.A0.D0.B8.D1.81.D1.82.D0.BE.D1.80.D0.B8.D0.B8_20_.D0.B8.D1.8E.D0.BD.D1.8F
如果我使用看起来可行的其他技术(例如,regexr.com上)应用RegEx。 在Node.js(v8.11.3)上执行,会导致以下异常:
let string = ".D0.9B.D0.B5.D1.82.D0.BE.D0.BF.D0.B8.D1.81.D1.8C.C2.A0.D1.80.D1.83.D1.81.D1.81.D0.BA.D0.BE.D0.B9.C2.A0.D0.B8.D1.81.D1.82.D0.BE.D1.80.D0.B8.D0.B8_20_.D0.B8.D1.8E.D0.BD.D1.8F";
this.regEx = new RegExp(
"(?:http(s)?:\/\/)?(?:www.)?(?:((?:[-a-z0-9]+[.])*){0,242}((?:[a-z2-7]{16}|[a-z2-7]{56})\.onion)(?::[0-9]{1,6})?)(\/(?:[^\"\'\s]+|$))?",
"ugi"
);
this.regEx.exec(string);
现在我想知道:是否有人知道问题可能来自何处?我应该如何调试这样的问题?
到目前为止,我尝试简化正则表达式并对其进行可视化,因为我发现更容易看到可能会出现错误的转弯。在调试RegEx本身的问题时,Chrome Dev工具似乎并没有太大帮助。