@thg435寫了這個答案,一個javascript question:爲什麼這個正則表達式不適用於東方阿拉伯數字?
> 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個或更多的位(例如12345和未1234)相匹配的數字。我最初認爲這很簡單,只需在表達式的末尾添加{5,}
即可,但這不起作用。
看到http://www.unicode.org/reports/tr18/tr18-11.html – 2013-04-26 17:06:59
1234567890實際上是阿拉伯數字;) – zeroflagL 2013-04-26 17:14:33
[this](http://stackoverflow.com/questions/12518689/regular-expression-not-to-allow-numbers-just-arabic-letters)可能有幫助 – zeroflagL 2013-04-26 17:18:02