条件:
示例:
在那一刻,我有了这个,但没有控制希腊的极限
/ ^ [\ p {拉丁} \ p {希伯来语} \ p {希腊}] + $ / U
答案 0 :(得分:1)
我猜你会这样(不可读)的方式
^([\p{Latin}\p{Hebrew}]*)(\p{Greek}?)([\p{Latin}\p{Hebrew}]*)(\p{Greek}?)([\p{Latin}\p{Hebrew}]*)$
重复的群组\ 1 \ 2 \ 1 \ 2 \ 1不起作用,因为他们匹配完全相同的字符串,而不是模式。
此正则表达式与您的示例匹配
答案 1 :(得分:1)
你可以使用一个简单的正则表达式,现在允许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}]+
- 一个或多个希腊语,拉丁语或希伯来语字母$
- 字符串结尾(或者,更好的是,使用\z
来匹配字符串的结尾)。