PCRE 正则表达式。允许拉丁文、希伯来文和希腊文字符

PCRE Regular expression. Allow Latin, Hebrew and Greek characters

条件:

示例:

在那一刻我有这个,但无法控制希腊限制

/^[\p{Latin}\p{Hebrew}\p{Greek}]+$/u

我猜你会需要这种(不可读)方式

^([\p{Latin}\p{Hebrew}]*)(\p{Greek}?)([\p{Latin}\p{Hebrew}]*)(\p{Greek}?)([\p{Latin}\p{Hebrew}]*)$

带有 的重复组不起作用,因为它们会匹配完全相同的字符串,而不是模式。

此正则表达式与您的示例匹配

您可以使用环视的简单正则表达式,现在允许 3 个希腊字符同时允许所有其他字符:

/^(?!(?:\P{Greek}*\p{Greek}){3})[\p{Latin}\p{Hebrew}\p{Greek}]+$/u

regex demo。您可以使用更多类似的条件轻松自定义模式。

详情

  • ^ - 字符串的开头
  • (?!(?:\P{Greek}*\p{Greek}){3}) - 从字符串的开头开始,尝试匹配 3 次重复的零个或多个非希腊字母(\P{Greek}*,在演示中,它被替换为 [^\n\p{Greek}]*来正确匹配多行输入中的)然后是一个希腊字母,如果找到匹配,则整个正则表达式匹配失败(不返回匹配)
  • [\p{Latin}\p{Hebrew}\p{Greek}]+ - 1 个或多个希腊、拉丁或希伯来字母
  • $ - 字符串结尾(或者,更好的是,使用 \z 匹配字符串的结尾)。