假设我有一个这样的字符串:"1367,14,243,540"
(总是有4个数字,只有数字,没有小数位,总是用逗号分隔)
正则表达式应该如何允许我从字符串中选择/过滤/返回让我们说243
?
答案 0 :(得分:3)
如果你坚持使用正则表达式/\d+/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测试性能差异
修改:对于对效果差异感兴趣的人, check this link 。
note2:这里的map只是用于将字符串解析为整数,如果要将它们保存为字符串,可以将其删除。
答案 1 :(得分:1)
试
^([[:digit:]]+,){2}([[:digit:]]+)
您想要的号码在捕获组#2中。
答案 2 :(得分:1)
正如其中一条评论所说,在这种情况下你不应该真正使用正则表达式。总是尝试使用适当的工具来完成工作,在这种情况下,正则表达式是巨大的过度杀伤。
您的问题很容易解决,
$sourceString = "1367,14,243,540";
$numbers = explode(",", $sourceString);
$neededNumber = $numbers[2];
答案 3 :(得分:0)
您只需要描述您的字符串:
^(\d+,){2}(\d+)
“从一开始,数字后跟逗号出现两次,然后是另一个数字。”
您可以选择第二组的编号,即\ 2或$ 2.