-2

假设我有一个这样的字符串:("1367,14,243,540"总是有 4 个数字,只有数字,没有小数位,总是用逗号分隔)

正则表达式应该如何让我243从字符串中挑选/过滤/返回?

4

4 回答 4

3

如果您坚持使用正则表达式,这是您的正则表达式/\d+/g(这里的 g 用于 js 中的多项选择,使用与 Microsoft 框架匹配)虽然您可以使用 split(使用 js 的示例):

var v='123,333,445,67';

console.log('split:');
console.log(v.split(',').map(function(n){return parseInt(n);}));

console.log('\nregex:');
console.log(v.match(/\d+/g).map(function(n){return parseInt(n);}));

jsfiddle

这些数字将在一个数组中返回,您可以使用索引来访问所需的数字,比如 2。

注意: split 比 regex 快,您可以使用 jsperf.com 测试性能差异

编辑:对于那些对性能差异感兴趣的人,请查看此链接

注意2:这里的map只是为了将字符串解析成整数,如果你想将它们保留为字符串,你可以删除它。

于 2013-07-12T10:24:53.267 回答
1

尝试

^([[:digit:]]+,){2}([[:digit:]]+)

您想要的号码在捕获组 #2 中。

于 2013-07-12T10:16:40.293 回答
1

正如其中一条评论所说,在这种情况下,您不应该真正使用正则表达式。始终尝试使用适当的工具来完成这项工作,在这种情况下,正则表达式是巨大的矫枉过正。

您的问题很容易解决,因为

$sourceString = "1367,14,243,540";
$numbers = explode(",", $sourceString);
$neededNumber = $numbers[2];
于 2013-07-12T10:21:29.477 回答
0

你只需要描述你的字符串:

^(\d+,){2}(\d+)

“从一开始,逗号后面的数字出现两次,然后是另一个数字。”
您可以选择第二组的号码,即\2 或$2。

于 2013-07-12T10:19:40.943 回答