Javascript 要排除URL的
我正在尝试创建一个JavaScript程序,用链接替换某些文本模式。但是,由于页面上的URL中存在一些模式,它会阻止URL链接 我特别希望排除包含在URL中的模式,例如,这里是我当前的正则表达式代码Javascript 要排除URL的,javascript,regex,Javascript,Regex,我正在尝试创建一个JavaScript程序,用链接替换某些文本模式。但是,由于页面上的URL中存在一些模式,它会阻止URL链接 我特别希望排除包含在URL中的模式,例如,这里是我当前的正则表达式代码 $els.replaceText(/(\bX00[A-Z0-9]{7}\b)/gi, '<span class="context context_ident">$1<\/span>'); 一些示例文本: 项目:X00132BhJk www.domain.com/X00132
$els.replaceText(/(\bX00[A-Z0-9]{7}\b)/gi, '<span class="context context_ident">$1<\/span>');
一些示例文本:
项目:X00132BhJk
www.domain.com/X00132BhJk
www.domainsearch.com/search?ident=X00132BhJk
X00132BhJk
X00132BhJk
应选择并替换斜体引用,但不应选择域中包含的引用。我一直面临的问题是,当参考资料
最初我尝试了\sX00[A-Z0-9]{7}\s,但当引用出现在页面最左边的句子第一个单词时,它没有被选中。同样,它也不会选择是后跟句号还是前面加冒号
有没有办法通过排除/来专门排除URL?and=不作为前一个字符,但在所有其他情况下选择
(?!^www.*?X00[A-Z0-9]{7}.*$)^(.*?)(X00[A-Z0-9]{7})(.*)$
试试这个
替换为
\1<span class="context context_ident">$1<\/span>\2
见演示
由于我使用了锚点,因此还为多行匹配添加了一个m标志。您可以尝试使用非捕获括号?:,在您的情况下?:[^/?=]|^
您不需要在替换零件的闭合跨距标记中转义正斜杠 正则表达式:
^((?:(?![\/?]).)*)(X00[A-Z0-9a-z]{7})(.*)$
替换字符串:
$1<span class="context context_ident">$2</span>$3
捕获^ |或[^/?=]中的一个,之前不得出现
/(^|[^\/?=])(\bX00[A-Z0-9]{7}\b)/gi
并替换为:“$1$2”
也 这看起来会吃掉/?或=来自URL;因为它不被捕获并不意味着它不是被替换的比赛的一部分,我最初的想法是一样的,但是小提琴显示了相反的结果;这是一场不属于这些角色的比赛;注意:是如何消失的;没错,最好使用Jonny 5的答案问题在于`X00132BhJk1是内部网中完全有效的URL,例如,在防火墙中用该名称指定主机。编写用于验证URL的regexp非常困难。您所能做的就是找到一些无效的情况,例如包含无效字符的URL,或者明显存在格式错误。完美的解决方案是,稍微编辑一下/^ |[^/?=]就可以将问题更改为/^ |[^\/?=],因为/转义正则表达式声明太早。我已经测试过了,它成功了perfectly@Bobstefano很好,适合你:相应地更新答案。
/(^|[^\/?=])(\bX00[A-Z0-9]{7}\b)/gi