求验证希伯来数字系统中希伯来年份的正则表达式
验证合法希伯来年份编号的方案
系统名称明确
正确的正式名称是希伯来数字系统(Hebrew Numeral System),Gematria是基于该系统衍生出的数字命理应用,不属于系统本身的命名范畴。
核心规则梳理
希伯来年份的字母序列必须遵循以下规则:
- 数字按从大到小的顺序排列:千位(1000+)→百位(100-900)→十位(10-90)→个位(1-9),大值字母不能出现在小值字母之后(比如代表400的ת不能放在代表90的צ之后)
- 千位部分:由单个字母加撇号构成(א'=1000、ב'=2000…ט'=9000),为可选项
- 百位部分:使用固定字母(ק=100、ר=200、ש=300、ת=400、ך=500、ם=600、ן=700、ף=800、ץ=900),为可选项
- 十位部分:使用固定字母(י=10、כ=20、ל=30、מ=40、נ=50、ס=60、ע=70、פ=80、צ=90),为可选项
- 个位部分:
- 若存在十位,必须用引号
"与十位分隔(如ט"ו=15) - 无十位时,直接用单个字母(如א=1)
- 若存在十位,必须用引号
修正后的正则表达式
以下正则可覆盖所有合法场景(含仅个位、仅十位、带千位/百位等情况):
^(?:[אבגדהוזחט]')?(?:[קראשתךםןףץ])?(?:[יכלמנסעפצ])?(?:"[אבגדהוזחט])?$
各部分解释
^(?:[אבגדהוזחט]')?:匹配可选的千位部分,包含א'到ט'对应1000-9000(?:[קראשתךםןףץ])?:匹配可选的百位部分,覆盖100-900的所有合法字母(?:[יכלמנסעפצ])?:匹配可选的十位部分,覆盖10-90的所有合法字母(?:"[אבגדהוזחט])?$:匹配可选的带引号个位部分,仅当存在十位时生效;无十位则该部分不出现
额外验证补充
正则仅能做格式与顺序的初步校验,若需更严谨的有效性验证,建议结合数值计算:
- 确保每个量级(千/百/十/个)仅出现一次对应字母,无重复叠加
- 验证终形字母(ך/ם/ן/ף/ץ)仅用于对应百位值,不被误用
示例
- 有效年份:א(1)、י(10)、ט"ו(15)、קי(110)、א'ץ"ט(1909)
- 无效年份:צת"ב(400的ת位于90的צ之后,顺序错误)、ק"א(百位加个位无需引号)、אב'(千位仅允许单个字母加撇号)
内容的提问来源于stack exchange,提问作者LetsDoGood
相关产品推荐
相关产品推荐

