我有一个问题: 我想用正则表达式对名字进行验证,只允许使用希伯来语和英语,不允许使用数字。 有人能帮我编写这个代码吗?
我有一个问题: 我想用正则表达式对名字进行验证,只允许使用希伯来语和英语,不允许使用数字。 有人能帮我编写这个代码吗?
看起来希伯来语的范围是 \u0590-\u05fe
(根据这个不错的JavaScript Unicode正则表达式生成器)。
/^[a-z\u0590-\u05fe]+$/i
$
? - Casey Falk\u200f
\u200e
)。如果用户从希伯来语切换到英语或反之,则可能会出现问题。我的解决方案已经覆盖了这个问题 https://dev59.com/618f5IYBdhLWcg3wEPIq#66104183 - genericUser虽然所选答案关于 “希伯来语” 是正确的,但 OP 想要将验证仅限制在希伯来语和英文字母。 希伯来 Unicode 添加了很多标点符号和符号(如您可以在此处的表中看到),对于这种验证无关紧要。 如果您只想要希伯来字母(以及英文字母),则正则表达式应为:
/^[a-z\u05D0-\u05EA]+$/i
我建议也加入单引号(')作为替代,用于表达在希伯来语中不存在的外来辅音(例如George中的G和Charlie中的Ch),将其与字母一起使用:
/^[a-z\u05D0-\u05EA']+$/i
我正在我的应用程序中使用上述正则表达式。我的用户对此感到满意:
RegExp(r'^[a-zA-Z\u0590-\u05FF\u200f\u200e ]+$');
a-zA-Z
\u0590-\u05FF
\u200f\u200e
祝使用愉快!
^
)或结尾($
)。 - Casey Falk仅使用希伯来字母:
/^[\u0590-\u05ea]+$/i
如果你的正则表达式引擎支持,你也可以在正则表达式中使用\p{Hebrew}
来检测任何希伯来语Unicode字符。
正则表达式模式位于两个/
之间。结尾的i
是一个标志,表示对大小写不敏感。 ^
表示行的开头,$
表示行的结尾。括号([
和]
)表示括号内的任意字符。 -
表示一个范围。请注意,字符是有序的,因此a-z
或א-ת
是有意义的;a-z
表示从a
到z
的所有字母。א-ת
也是如此。 +
表示前面的一个或多个。因此,此模式匹配来自英语或希伯来语的每个字母序列。
P.S.:还要注意,不同语言和平台的正则表达式风格不同。例如,在Sublime Text
中,模式将是:(?i)^[א-תa-z]+$
。
/^[א-תa-z]+$/i
NSRegularExpression(pattern: "^[\\p{Hebrew} a-z]$", options: .caseInsensitive).firstMatch(in: value, options: [], range: NSRange(location: 0, length: value.count))