0

与在线正则表达式测试器相比,为什么这个正则表达式在 javascript 中返回完全不同的结果,可在http://www.gskinner.com/RegExr/找到

var patt = new RegExp(/\D([0-9]*)/g);
"/144444455".match(patt);

控制台中的返回是:

["/144444455"]

虽然它确实在正则表达式测试器中返回了正确的组。

我要做的就是提取一段文本中的第一个数量。无论该文本是否以“/”开头或有一堆其他无用的信息。

4

1 回答 1

3

正则表达式完全按照您的要求执行:

  • \D匹配一个非数字(在这种情况下/
  • [0-9]*匹配一串数字 ( 144444455)

您将需要访问第一个捕获组的内容:

var match = patt.exec(subject);
if (match != null) {
    result = match[1];
}

或者干脆\D完全放弃 - 我不确定你为什么认为你首先需要它......

/g然后,如果您只想匹配第一个数字,而不是文本中的所有数字,则可能应该删除修饰符。所以,

result = subject.match(/\d+/);

应该也能正常工作。

于 2012-09-20T14:45:09.073 回答