【发布时间】:2020-12-22 08:44:44
【问题描述】:
我有一个用于验证波斯日期的正则表达式,如下所示:
((((\u0661\u0663|\u0661\u0664)[\u0660-\u0669]{2})(\/|-)(\u0660[\u0660-\u0669]{1}|\u0661\u0661|\u0661\u0662))(\/|-)(\u0660[\u0661-\u0669]{1}|(\u0661|\u0662)[\u0660-\u0669]{1}|\u0663\u0660|\u0663\u0661))
1.
(\u0661\u0663|\u0661\u0664)[\u0660-\u0669]{2} : only match ۱۳|۱۴ followed by two char between [٠-۹]
match: ۱۳۹۹ , ۱۴٠٠
not match: ۱۲۹۹
2.
separator can be / | -
3.
(\u0660[\u0660-\u0669]{1}|\u0661\u0661|\u0661\u0662)) : (٠ with following single char between [۱-۹]) | ۱۱ | ۱۲
match: ٠۱ , ٠۹, ۱۱ , ۱۲
not match: ۱۳ , ۲۱ , ٠٠ , etc
4.
(\u0660[\u0661-\u0669]{1}|(\u0661|\u0662)[\u0660-\u0669]{1}|\u0663\u0660|\u0663\u0661) : match (٠۱-٠۹) | (۱۱ - ۲۹) | ۳٠ | ۳۱
但是在这个test 链接中的测试没有通过。我做错什么了吗?
【问题讨论】:
-
也许您对链接帖子中的"EXTENDED ARABIC-INDIC DIGIT" 感到困惑。看看如果我更改 unicode 块会发生什么here
-
@JvdV 不,我在测试和正则表达式中使用了波斯字符
-
但是,您测试它的文本显然是由我显示的链接中看到的扩展数字触发的。
-
@JvdV 是的,他们看起来很近,但我知道区别
-
那我就糊涂了。当您将所有代码块更改为“U+06Fn”表示法时,会触发链接中的示例文本。所以你目前 not 使用了正确的 unicode 块。有什么令人困惑的?或者....我在这里错过了什么?
标签: javascript regex unicode