Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 要排除URL的_Javascript_Regex - Fatal编程技术网

Javascript 要排除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

我正在尝试创建一个JavaScript程序,用链接替换某些文本模式。但是,由于页面上的URL中存在一些模式,它会阻止URL链接

我特别希望排除包含在URL中的模式,例如,这里是我当前的正则表达式代码

$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