【问题标题】:regular expression replace multiple matching pattern with link正则表达式用链接替换多个匹配模式
【发布时间】:2014-05-22 03:37:03
【问题描述】:

我的文本字段包含一次或多次出现的某些代码,例如“XX00123”或“XX00456”,例如,

The XX00123 is a sibling of XX00456 and parent of XX00789

我想使用正则表达式将每次出现的代码内容替换为指向它的链接。上面例子的结果是,

The <A HREF='http://server.com/XX00123'>XX00123</A> is a sibling of <A HREF='http://server.com/XX00456'>XX00456</A> and parent of <A HREF='http://server.com/XX00789'>XX00789</A>

我想我可以做到

  1. 将搜索结果放入数组中,
  2. 如果数组不为空,则为数组中的每个元素构造链接的文本字符串,
  3. 执行循环以再次查找每个匹配项并将其替换为链接

但是有没有什么方法可以用 JavaScript 和/或 JQuery 在一行中完成这个正则表达式?

【问题讨论】:

  • 您是否使用任何特定语言进行此操作?

标签: javascript regex


【解决方案1】:

您可以在此处使用以下内容。

var result = str.replace(/\b(XX\d+)\b/gi, "<A HREF='http://server.com/$1'>$1</A>");

Working Demo

【讨论】:

  • 请不要滥用kbd标签。
  • @hwnd 请你帮我解决这个问题stackoverflow.com/questions/23797093/…
  • @Axel 你需要什么?
  • 我需要补充我的正则表达式,使其满足我的问题中列出的所有 8 个要求。事实上,只满足 3 :S
【解决方案2】:

你可以这样使用:

var re = /([X0-9]+)/gi; 
var result = str.replace(re, "<A HREF='http://server.com/$1'>$1</A>");

REGEX101

regex 将匹配一个或多个x,后跟数字,直到空格或非数字值。

【讨论】:

    【解决方案3】:

    使用以下代码,

    var result = str.replace(/(XX(\d{5}))/ig, "<A HREF='server.com/$2'>$1</A>");
    

    结果是,

    The <A HREF='http://server.com/00123'>XX00123</A> is a sibling of <A HREF='http://server.com/00456'>XX00456</A> and parent of <A HREF='http://server.com/00789'>XX00789</A>
    

    $1 代表 "(XX(\d{5}))" - 外侧括号对,$2 代表 "(\d{5})" - 内侧括号对。

    【讨论】:

      猜你喜欢
      • 2012-09-28
      • 2012-05-16
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 2016-03-14
      相关资源
      最近更新 更多