假设我有一个这样的字符串:("1367,14,243,540"
总是有 4 个数字,只有数字,没有小数位,总是用逗号分隔)
正则表达式应该如何让我243
从字符串中挑选/过滤/返回?
假设我有一个这样的字符串:("1367,14,243,540"
总是有 4 个数字,只有数字,没有小数位,总是用逗号分隔)
正则表达式应该如何让我243
从字符串中挑选/过滤/返回?
如果您坚持使用正则表达式,这是您的正则表达式/\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);}));
这些数字将在一个数组中返回,您可以使用索引来访问所需的数字,比如 2。
注意: split 比 regex 快,您可以使用 jsperf.com 测试性能差异
编辑:对于那些对性能差异感兴趣的人,请查看此链接。
注意2:这里的map只是为了将字符串解析成整数,如果你想将它们保留为字符串,你可以删除它。
尝试
^([[:digit:]]+,){2}([[:digit:]]+)
您想要的号码在捕获组 #2 中。
正如其中一条评论所说,在这种情况下,您不应该真正使用正则表达式。始终尝试使用适当的工具来完成这项工作,在这种情况下,正则表达式是巨大的矫枉过正。
您的问题很容易解决,因为
$sourceString = "1367,14,243,540";
$numbers = explode(",", $sourceString);
$neededNumber = $numbers[2];
你只需要描述你的字符串:
^(\d+,){2}(\d+)
“从一开始,逗号后面的数字出现两次,然后是另一个数字。”
您可以选择第二组的号码,即\2 或$2。