我的代码有什么问题
var str = "[356] Hello World";
var patt = new RegExp("(?!\[)\d+(?<!\])","");
var result = patt.exec(str);
结果应为= 356
答案 0 :(得分:2)
问题是你不能在Javascript中做负面的看守。
这样的事情应该有效:
var str = '[356] Hello World',
patt = /\[(\d+)\]/,
result = patt.exec(str)[1];
这会创建一个匹配的组,并选择与[1]
的匹配。
答案 1 :(得分:1)
Lookbehinds are not supported in JavaScript
您可以尝试使用捕获子模式。
var str = "[356] Hello World";
var match = str.match(/\[(\d+)\]/);
var result = match ? match[1] : null;
答案 2 :(得分:1)
除了其他人指出的内容之外,您还有错误的外观语法。
(?!regex)
是一个负面的预测,但你将它用作积极的外观。(?<!regex)
是一个负面的背后隐藏,但你将它作为一个积极的前瞻。由于JS不支持lookbehinds,泰语和 lonesomeday 的答案是可行的方法。在支持它们的语言中,您需要这样:
/(?<=\[)\d+(?=\])/