为什么这个正则表达式在 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/