以下正则表达式有什么问题,它在许多在线 JavaScript 正则表达式测试器(和 RegEx Buddy)中有效,但在我的应用程序中不起作用?
它的目的是用超链接替换 URL。 Javascript 可在 javascript 文件中找到。
var fixed = text.replace(/\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]/ig, "<a href='$&' target='blank'>$&</a>");
例如,Chrome 会提示 & 无效(IE8 也是如此)。有没有办法在不诉诸 RegEx 对象的情况下转义 & 符号(或其他错误)?
最佳答案
这些测试器允许您以其原始形式输入正则表达式,但是当您在源代码中使用它时,您必须以字符串文字或(如此处的情况)正则表达式文字的形式编写它。 JavaScript 使用正斜杠作为其正则表达式文字分隔符,因此您必须转义正则表达式本身中的任何斜杠以避免解释器混淆。
一旦你逃脱了斜杠,它应该停止提示&符号。这很可能是由格式错误的正则表达式文字引起的。
我认识这个正则表达式,前几天我自己也用过它;你是从 RegexBuddy 的图书馆得到的,不是吗?如果您使用 RB 的“使用”功能来创建与 JS 兼容的正则表达式,它会为您转义斜杠。
关于javascript - 如何使用正则表达式在全文中查找 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3498779/