Regex Dart如何向字符串编号添加逗号

Regex Dart如何向字符串编号添加逗号,regex,string,dart,masking,Regex,String,Dart,Masking,我正在尝试适应这一点: 在dart工作,但运气不好 以下任一项都不起作用: print("1000200".replaceAllMapped(new RegExp(r'/(\d)(?=(\d{3})+$)'), (match m) => "${m},")); print("1000300".replaceAll(new RegExp(r'/\d{1,3}(?=(\d{3})+(?!\d))/g'), (match m) => "$m,")); 是否有一种更简单/有效的方法向字符串数

我正在尝试适应这一点: 在dart工作,但运气不好

以下任一项都不起作用:

print("1000200".replaceAllMapped(new RegExp(r'/(\d)(?=(\d{3})+$)'), (match m) => "${m},"));
print("1000300".replaceAll(new RegExp(r'/\d{1,3}(?=(\d{3})+(?!\d))/g'), (match m) => "$m,"));

是否有一种更简单/有效的方法向字符串数字添加逗号?

尝试以下正则表达式:
(\d{1,3})(?=(\d{3})+$)


这将提供两个反向引用,使用它们替换您的号码,如
$1,$2,
将在它们应该位于的位置添加逗号。

您刚刚忘记了在组中获取第一个数字。用这个短的:

'12345kWh'.replaceAllMapped(new RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), (Match m) => '${m[1]},')
看看可读的版本。在表达式的最后一部分中,我向任何非数字字符(包括字符串结尾)添加了检查,以便您也可以将其与“12瓦特”一起使用

RegExp reg = new RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))');
Function mathFunc = (Match match) => '${match[1]},';

List<String> tests = [
  '0',
  '10',
  '123',
  '1230',
  '12300',
  '123040',
  '12k',
  '12 ',
];

tests.forEach((String test) {
  String result = test.replaceAllMapped(reg, mathFunc);
  print('$test -> $result');
});

这不会产生类似于
12423,
,在末尾添加逗号的东西吗?不,它不会在新数字的末尾添加额外的逗号。好的,是的,我刚刚测试了它,你是对的。GLOP!地下城之火>>我试着适应你的建议,但没有骰子。也许是我有限的经验<代码>打印(“100030”.replaceAll(新的RegExp(r'(\d{1,3})(?=(\d{3})+$),“$1,$2”)那不起作用..也不使用replaceAllMapping。在第一次改编中,您错过了
$&,
replacer。它仅适用于JS,没有这个replace表达式就不起作用。我们应该将表达式更改为一点,看看我下面的答案。Kelegorm,太棒了!非常感谢!这很有效。这是我的工作代码:
print(“1000200”.replaceAllMapped(新的RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))),(匹配m=>“${m[1]}”);
0 -> 0
10 -> 10
123 -> 123
1230 -> 1,230
12300 -> 12,300
123040 -> 123,040
12k -> 12k
12  -> 12