嘿,我正在尝试对一个字符串执行一个向后的正则表达式搜索,将它分成3位数的组。就我在AS3文档中所见,在reg ex引擎中向后搜索是不可能的
本练习的重点是在数字中插入三重逗号,如下所示:
10000000=>;10,000,000
我想这样做:
string.replace(/(\d{3})/g,“,$1”)
但这是不正确的,因为搜索不是从后面进行的,替换$1只适用于第一场比赛
我觉得使用循环执行此任务会更好
更新:
由于AS3不支持前瞻性,这就是我解决它的方法
公共静态函数formatNumber(number:number):字符串
{
var numString:String=number.toString()
变量结果:字符串=“”
while(numString.length>;3)
{
变量块:String=numString.substr(-3)
numString=numString.substr(0,numString.length-3)
结果=','+块+结果
}
如果(numString.length>;0)
{
结果=数值字符串+结果
}
返回结果
}
如果您的语言支持正向前瞻断言,那么我认为以下正则表达式可以工作:
(\d)(?=(\d{3})+$)
用Java演示:
导入静态org.junit.Assert.assertEquals;
导入org.junit.Test;
公共类承诺测试{
@试验
public void testCommify(){
字符串num0=“1”;
字符串num1=“123456”;
字符串num2=“1234567”;
字符串num3=“12345678”;
字符串num4=“123456789”;
字符串regex=“(\\d)(?=(\\d{3})+$)”;
资产质量(“1”,num0.replaceAll(regex,“$1”);
资产质量(“123456”,num1.replaceAll(regex,“$1”);
资产质量(“1234567”,num2.replaceAll(regex,“$1”);
资产质量(“12345678”,num3.replaceAll(regex,“$1”);
资产质量(“123456789”,num4.replaceAll(regex,“$1”);
}
}