Regex PCRE正则表达式。允许使用拉丁语、希伯来语和希腊语字符

Regex PCRE正则表达式。允许使用拉丁语、希伯来语和希腊语字符,regex,pcre,Regex,Pcre,条件: 字符串可以包含拉丁字符 字符串可以包含希伯来语字符 字符串可以包含0、1、2个希腊字符 示例: A==>很好 b==>很好 β==>好 ג===>很好 aβ==>良好 aaaββג===>良好 aaaβגגג===>良好 aβa•βa•a•===>良好 aβaaβ•β•===>坏 在那一刻,我有这个,但无法控制希腊的极限 /^[\p{拉丁语}\p{希伯来语}\p{希腊语}]+$/u 我想你会需要这种(不可读的)方式 带有\1\2\1\2\1的重复组不起作用,因为它们匹配的是完全相

条件:

  • 字符串可以包含拉丁字符
  • 字符串可以包含希伯来语字符
  • 字符串可以包含0、1、2个希腊字符
示例:

  • A==>很好
  • b==>很好
  • β==>好
  • ג===>很好
  • aβ==>良好
  • aaaββג===>良好
  • aaaβגגג===>良好
  • aβa•βa•a•===>良好
  • aβaaβ•β•===>坏
在那一刻,我有这个,但无法控制希腊的极限

/^[\p{拉丁语}\p{希伯来语}\p{希腊语}]+$/u


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

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


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

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

/^(?!(?:\P{Greek}*\p{Greek}){3})[\p{Latin}\p{Hebrew}\p{Greek}]+$/u
看。您可以使用更多类似的条件轻松自定义模式

详细信息

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

好主意,具有消极的前瞻性和{3}。一旦理解了,这个就很好了
/^(?!(?:\P{Greek}*\p{Greek}){3})[\p{Latin}\p{Hebrew}\p{Greek}]+$/u