javascript - 正则表达式在 JavaScript 中产生不同的结果

标签 javascript regex

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

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

控制台中的返回是:

["/144444455"]

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

我想做的就是提取一段文本中的第一个金额。不管该文本是否以“/”开头或包含一堆其他无用信息。

最佳答案

正则表达式完全按照您的指示执行:

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

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

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

或者干脆完全删除 \D - 我不知道为什么你认为你首先需要它......

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

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

应该也能正常工作。

关于javascript - 正则表达式在 JavaScript 中产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12515040/

相关文章:

javascript - 没有在浏览器中运行

Java 一次多次替换

密码要求的正则表达式

javascript - 从文件夹导入和导出所有 .vue 文件

Javascript/Jquery 将字符串转换为数组

javascript - 如何在 Electron 中渲染 Jade?

javascript - 在缩小的 Angular javascript中调试未知提供者

Javascript - 如何通过多个字符串进行搜索

regex - 在 R 中修剪字符串

java - 在哪个行号找到正则表达式匹配项?