【问题标题】:Regex produces different result in javascript正则表达式在 javascript 中产生不同的结果
【发布时间】:2012-09-20 22:45:54
【问题描述】:

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

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

控制台中的返回是:

["/144444455"]

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

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

【问题讨论】:

  • 向我们展示一些具有预期结果的示例输入。
  • 正则表达式引擎并不完全相同,内置的正则表达式库因语言而异。该在线版本使用 ActionScript 3 内置库,因为它是用 Flex/Flash 编写的。这与 Javascript 使用的不同。

标签: javascript regex


【解决方案1】:

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

  • \D 匹配非数字(在本例中为 /
  • [0-9]* 匹配一串数字 (144444455)

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

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

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

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

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

应该也可以。

【讨论】:

  • 你抢先了,正要回答。 :)
猜你喜欢
  • 2016-11-04
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
相关资源
最近更新 更多