JavaScript RegExp引用另一个RegExp(语法错误)

JavaScript RegExp引用另一个RegExp(语法错误),javascript,regex,Javascript,Regex,我希望匹配任何引用我定义的有点复杂的正则表达式的文本,该正则表达式如下所示: var oneRx = /Seite((\S+)\s+\S.*?)(?=\s*\2)/; 我想要的文本应该紧跟(但不包括)oneRx,并以一个或多个数字结尾,在这些数字的左右两侧各有一个或多个空格 var twoRx = new RegExp('(?<=' + oneRx + ')' + '.+\s+\d{1,}\s+$'); 返回 SGP0136.1 SGP0136.1 One 1 SGP0136

我希望匹配任何引用我定义的有点复杂的正则表达式的文本,该正则表达式如下所示:

var oneRx = /Seite((\S+)\s+\S.*?)(?=\s*\2)/;  
我想要的文本应该紧跟(但不包括)oneRx,并以一个或多个数字结尾,在这些数字的左右两侧各有一个或多个空格

var twoRx = new RegExp('(?<=' + oneRx + ')' + '.+\s+\d{1,}\s+$');   
返回

SGP0136.1 SGP0136.1 One 1 SGP0136.1 Two 3
我认为正则表达式的第二部分很好,但是我不知道如何定义第一部分而不产生语法错误


我应该如何在
twoRx
中引用
oneRx

JS regex引擎不支持查找。此外,您应该使用
.source
RegExp属性在构造函数表示法中组合正则表达式模式,其中转义反斜杠必须加倍以表示文字反斜杠

var oneRx=/Seite((\S+)\S+\S.*?(=\S*\2)/;
var twoRx=new RegExp(oneRx.source+'(.+\\s+\\d+\\s+$);
var s=“SeiteSGP0136.1 3SE7120 3SE7120-1BF00 SGP0137.1 3SE7140 3SE7140-1CD00 SGP0138.1 3SE7150 3SE7150-1BH00 SGP0136.1 SGP0136.1一SGP0136.1二3”;
var res=(m=s.match(twoRx))?m[3].trim():“”;

控制台日志(res)Javascript不支持lookbehinds。您可以改为使用捕获组:

var oneRx='Seite((\\S+\\S+\\S.*)(=\\S*\\2)';
var twoRx=new RegExp(oneRx+'(.+\\s+\\d+\\s+$);
var str='SeiteSGP0136.1 3SE7120 3SE7120-1BF00 SGP0137.1 3SE7140 3SE7140-1CD00 SGP0138.1 3SE7150 3SE7150-1BH00 SGP0136.1 SGP0136.1一SGP0136.1两个3';
变量匹配=str.match(twoRx);

console.log(匹配[3])在构造函数表示法中使用双转义。Besdies,JS不支持查找。请为具有预期结果的测试提供字符串。。我迟到了7分钟^^谢谢,正是我想要的。谢谢你的解释。但这场比赛不是我想要的,请看我对预期比赛的编辑。我只是注意到了。您似乎需要使用
+\\s+\\d+\\s+
模式捕获值,因此您只需使用捕获组包装模式的该部分。下次,请指出您的字符串和期望的匹配是什么样子,以避免答案被截取。
SGP0136.1 SGP0136.1 One 1 SGP0136.1 Two 3