PCRE 正则表达式。允许拉丁文、希伯来文和希腊文字符
PCRE Regular expression. Allow Latin, Hebrew and Greek characters
条件:
- 该字符串可以包含一个拉丁字符
- 字符串可以包含希伯来字符
- 字符串可以包含0、1、2个希腊字符
示例:
- 一个===>好
- b ===> 好
- β ===> 好
- ג ===> 好
- aβ ===> 好
- aaaββג ===> 好
- aaaββגגג ===> 好
- aβaגβaגג ===> 好
- aβaaβגβגג ===> 不好
在那一刻我有这个,但无法控制希腊限制
/^[\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
匹配字符串的结尾)。
条件:
- 该字符串可以包含一个拉丁字符
- 字符串可以包含希伯来字符
- 字符串可以包含0、1、2个希腊字符
示例:
- 一个===>好
- b ===> 好
- β ===> 好
- ג ===> 好
- aβ ===> 好
- aaaββג ===> 好
- aaaββגגג ===> 好
- aβaגβaגג ===> 好
- aβaaβגβגג ===> 不好
在那一刻我有这个,但无法控制希腊限制
/^[\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
匹配字符串的结尾)。