@thg435 bir javascript question bu cevabı yazdım:Bu regex neden Doğu Arapça rakamlarıyla çalışmaz?
> 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"
Hindu-Arap rakamları ile iyi çalışır; 1, 1,2,3,4, ... Fakat normal ifadeleri Doğu Arap rakamlarına uyguladığımda başarısız olur. Burada kullandığım regex (Sadece [\u0660-\u0669]
ile \d
değiştirdik;) 'dir: benim dize ١٢٣٤foo
olup olmadığı gerçekten çalışıyor
/[\u0660-\u0669](?=[\u0660-\u0669][\u0660-\u0669]([\u0660-\u0669]{3})*\b)/g
ama ١٢٣٤ foo
hatta foo١٢٣٤
olduğunda başarısız:
> a = "١٢٣٤foo ١٢٣٤ foo foo١٢٣٤"
"١٢٣٤foo ١٢٣٤ foo foo١٢٣٤"
> a.replace(/[\u0660-\u0669](?=[\u0660-\u0669][\u0660-\u0669]([\u0660-\u0669]{3})*\b)/g, "[$&]")
"١[٢]٣٤foo ١٢٣٤ foo foo١٢٣٤"
neler Aslında benim için önemli olan rakamlar ayrılıyor (ör. ١٢٣٤
). Neden ayrı sayılarla eşleşemez?
Güncelleme:
başka gereksinim regex sadece 5 veya daha fazla rakam (örneğin 12345 ve 1234) ile sayılar eşleşmesi gerektiğidir. Başlangıçta, ifadenin sonunda {5,}
eklemenin bu kadar basit olduğunu düşündüm, ancak bu işe yaramıyor.
http://www.unicode.org/reports/tr18/tr18-11.html –
1234567890 bkz aslında arap rakamlarıdır;) – zeroflagL
[bu] (http://stackoverflow.com/questions/12518689/regular-expression-not-to-allow-numbers-just-arabic-letters) – zeroflagL