在JavaScript中将文本菜单转换为HTML链接

在JavaScript中将文本菜单转换为HTML链接,javascript,regex,Javascript,Regex,我正在将纯文本菜单/命令结构转换为JavaScript中的HTML链接。我收到的文本跨度如下所示: <span>1. First option 2. Second option </span> <span>3. Third option </span> 1.第一种选择2。第二种选择 3.第三种选择 我希望每个菜单项都有一个链接,链接文本为“第一选项”、

我正在将纯文本菜单/命令结构转换为JavaScript中的HTML链接。我收到的文本跨度如下所示:

<span>1. First option 2. Second option </span> <span>3. Third option </span> 1.第一种选择2。第二种选择 3.第三种选择 我希望每个菜单项都有一个链接,链接文本为“第一选项”、“第二选项”等。主要问题是跨距上有空白:pre,我需要保留跨距内的所有空格。也就是说,每个跨度内的文本长度不能更改

我已经能够使用子模式和replace方法创建带有正则表达式的链接,但是我似乎不能既不选择整个跨度,也不能在子模式中没有空白。这就是我使用jquery将同一跨度中的两个链接分开,但保留在空格中的方法:
/(\d*)\。\s*([a-zA-Z][a-zA-Z\s]*)/g

var links='';
$('span').each(function(){
var text = this.innerText.replace(" ","");
var a= '<a href="#">' + text + '</a>';
links += a;
});

$('span').parent().html(links);
var-links='';
$('span')。每个(函数(){
var text=this.innerText.replace(“,”);
var a=“”;
链接+=a;
});
$('span').parent().html(链接);

我必须学习消极前瞻:)以下是我得到的:

/((\d+).\s)((?:[^\d\s]|\s(?)(?:\s*\d*)|(?:\s*$)|\d(?(?:\d*\s))*)/g


$1包含“1”$2包含“1”,$3包含菜单文本。实际上,它工作得很好。

这在很多方面都不起作用,包括它会丢失空白,并且不会为每个菜单命令创建单独的链接。它还消除了所有的跨度,这是一个坏的副作用。你自己有一个糟糕的问题。为什么这个菜单的格式是蹩脚的html?将其定义为json甚至是xml将更有意义。屏幕抓取一个旧的命令行系统,动态地放到web上。很好,但你必须处理这样的垃圾。