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

我特别希望排除包含在URL中的模式,例如,这是我当前的Regex代码。

$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?和=是否是紧接在前的字符,但在所有其他情况下都选择?

最佳答案

捕获(start中的^ negated character class |[^/?=],不能出现在前面)

/(^|[^\/?=])(\bX00[A-Z0-9]{7}\b)/gi


并替换为:'$1<span class="context context_ident">$2</span>'

see fiddle; SO Regex FAQ;

09-11 14:06