@thg435为一个 javascript问题写了这个答案:
> a = "foo 1234567890 bbb 123456"
"foo 1234567890 bbb 123456"
> a.replace(/\d(?=\d\d(\d{3})*\b)/g, "[$&]")
"foo 1[2]34[5]67[8]90 bbb [1]23[4]56"
它适用于印度教-阿拉伯数字;即1,2,3,4,...。但是当我尝试将正则表达式应用于东方阿拉伯数字时,它失败了。这是我使用的正则表达式(我刚刚替换\d
为[\u0660-\u0669]
):
/[\u0660-\u0669](?=[\u0660-\u0669][\u0660-\u0669]([\u0660-\u0669]{3})*\b)/g
如果我的字符串是 ,它实际上可以工作,但是当它是或什至١٢٣٤foo
时失败:١٢٣٤ foo
foo١٢٣٤
> a = "١٢٣٤foo ١٢٣٤ foo foo١٢٣٤"
"١٢٣٤foo ١٢٣٤ foo foo١٢٣٤"
> a.replace(/[\u0660-\u0669](?=[\u0660-\u0669][\u0660-\u0669]([\u0660-\u0669]{3})*\b)/g, "[$&]")
"١[٢]٣٤foo ١٢٣٤ foo foo١٢٣٤"
对我来说真正重要的是分开的数字(例如١٢٣٤
)。为什么它不能匹配分隔的数字?
更新:
另一个要求是正则表达式只能匹配 5 位或更多位的数字(例如 ١٢٣٤٥ 而不是 ١٢٣٤)。我最初认为这就像{5,}
在表达式末尾添加一样简单,但这不起作用。