除数字外,匹配希伯来和英文字符的正则表达式

22

我有一个问题: 我想用正则表达式对名字进行验证,只允许使用希伯来语和英语,不允许使用数字。 有人能帮我编写这个代码吗?


这似乎是放置此链接的好地方:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ - Biffen
8个回答

47

1
我们是否也应该在字符串末尾加上一个 $ - Casey Falk
@CaseyFalk 是的。已添加。 - Explosion Pills
它是否适用于“改变方向”的Unicode字符?(RLM,LRM,\u200f \u200e)。如果用户从希伯来语切换到英语或反之,则可能会出现问题。我的解决方案已经覆盖了这个问题 https://dev59.com/618f5IYBdhLWcg3wEPIq#66104183 - genericUser

9

虽然所选答案关于 “希伯来语” 是正确的,但 OP 想要将验证仅限制在希伯来语和英文字母。 希伯来 Unicode 添加了很多标点符号和符号(如您可以在此处的表中看到),对于这种验证无关紧要。 如果您只想要希伯来字母(以及英文字母),则正则表达式应为:

/^[a-z\u05D0-\u05EA]+$/i

我建议也加入单引号(')作为替代,用于表达在希伯来语中不存在的外来辅音(例如George中的G和Charlie中的Ch),将其与字母一起使用:

/^[a-z\u05D0-\u05EA']+$/i

8

英文和希伯来语完整正则表达式

我正在我的应用程序中使用上述正则表达式。我的用户对此感到满意:

RegExp(r'^[a-zA-Z\u0590-\u05FF\u200f\u200e ]+$');

正则表达式支持以下内容:

  • 英文字母(包括大写字母)。a-zA-Z
  • 希伯来文(包括特殊的结尾字符)。\u0590-\u05FF
  • 改变方向的unicode字符(RLM,LRM)。\u200f\u200e
  • 空白字符。

祝使用愉快!


2

1
注意,这个匹配空字符串,并不表示字符串的开头(^)或结尾($)。 - Casey Falk
2
另外,不要发帖说“不确定是否有效”,只需在JSFiddle/RegExPal上尝试一下即可。 ;) - Casey Falk

1

仅使用希伯来字母:

/^[\u0590-\u05ea]+$/i

1

如果你的正则表达式引擎支持,你也可以在正则表达式中使用\p{Hebrew}来检测任何希伯来语Unicode字符。


0

正则表达式模式位于两个/之间。结尾的i是一个标志,表示对大小写不敏感。 ^表示行的开头,$表示行的结尾。括号([])表示括号内的任意字符。 -表示一个范围。请注意,字符是有序的,因此a-zא-ת是有意义的;a-z表示从az的所有字母。א-ת也是如此。 +表示前面的一个或多个。因此,此模式匹配来自英语或希伯来语的每个字母序列。

P.S.:还要注意,不同语言和平台的正则表达式风格不同。例如,在Sublime Text中,模式将是:(?i)^[א-תa-z]+$

/^[א-תa-z]+$/i

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接