我需要验证输入,以确保它是一个有效的希伯来语年数,它只能有某些有效的字母序列。
类似于(pseudo regex)([:thousands:]')?[:hundreds combinations:][:tens:]?("[:alef-tes digits:])?
但有时它只有个位数,或十位数等,没有任何数百或数千...
不知道它的正式名称是什么,希伯来数字系统?希伯来数字命理学?希伯来数字系统?Gematria?概述如下所述:https://en.wikipedia.org/wiki/Hebrew_numerals在此测试:https://hebrewnumerals.github.io/示例:
- 1 =
- 15 ="
- 16 ="
- 42 ="
- 133 ="
- 499 ="
- 501 ="
- 651 ="
- 765 ="
- 872 = birth "
- 1015 ="
- 1724 ="
- 2389 ="
- 4129 ="
- 4487 ="
- 6298 ="
- 7892 =
- 9301 ="
一些无效年份的示例:
- ז׳צת"ב (Taf 400 cannot be after Tzadik 90)
- ר "
- '
- bad-should've been
- "
(尝试搜索现有的库或日历源代码,给了regex101一堆尝试)
1条答案
按热度按时间mzsu5hc01#
我现在使用的PHP非正则表达式解决方法:
1.从反面开始;编写一个函数
numberToHeb($num)
,将一个数字(例如4345)可靠地转换为一个正确表达的希伯来数字('")。目前正在使用内置的PHP日历转换函数,利用年数作为通用的转换数字到希伯来语的功能(限于1-9999范围)1.现在创建一个函数
hebNumber($str)
,以获取任何希望被验证的希伯来数(例如'"),如果它是任何希伯来数(在本例中为1-9999)的有效公式。在这个功能中;1.将每个希伯来数字转换为数值('= 4000,=300,=40,=5),加总(4345),通过步骤#1中的
numberToHeb($num)
函数传递总数,检查结果字符串是否与hebNumber($str)
函数的字符串匹配,如果匹配=通过验证,否则它不是一个正确格式的希伯来数字。