如何使用正则表达式提取文本?

时间:2011-03-02 18:06:30

标签: javascript jquery regex string

我的代码有什么问题

var str = "[356] Hello World";
var patt = new RegExp("(?!\[)\d+(?<!\])","");
var result = patt.exec(str);

结果应为= 356

3 个答案:

答案 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+(?=\])/