RegExr至少包含2个字母和可选字母,但没有其他字母?

kle*_*ooo 5 php regex

我想要一个正则表达式来表示文本,如果其中包含至少2个字母的1个单词,并且允许至少25个字母或数字,并且还允许(0-9äöü,.'-),则允许使用正则表达式,如果那里有其他字母或数字,则应该给出一个错误。


例:

正确:

  • 约翰·杜
  • 马克斯·穆斯特曼
  • 约翰·弗兰克·杜伊。

假:

  • 约翰/杜

正则表达式:

  • Wordregex:([az] {2})\ w +
  • 允许的项目:[äöü0-9,.' -]
  • 最大长度:{25,999}
if(preg_match("/([A-Za-z]{2})\w+/",$text)){
    if(!preg_match("/[a-zäöüA-ZÄÖÜ,.' -]/g",$text)){echo 'error';}
else{echo'error';}
Run Code Online (Sandbox Code Playgroud)

我不确定如何在代码中获得解决方案。

The*_*ird 8

您可能会做的是使用正向前瞻来断言长度为25-999,并且断言有2个连续的 [a-z]

然后将您的角色类[a-zA-Z0-9äöü,.' -]+与允许的项目相匹配,并在其中添加az和AZ。

^(?=.{25,999})(?=.*[a-z]{2})[a-zA-Z0-9äöü,.' -]+$
Run Code Online (Sandbox Code Playgroud)
  • ^ 字符串开始
  • (?=.{25,999}) 正向向前看,断言25-99个字符
  • (?=.*[a-z]{2}) 正向前瞻,断言2次[az]
  • [a-zA-Z0-9äöü,.' -]+ 匹配列出的任何1+次
  • $ 字符串结尾

正则表达式演示 | PHP演示

例如(我使字符串变长,以使最小长度为25)

$strings = [
    "This is a text with John Doe",
    "This is a text with Max Müstermann ",
    "This is a text withJohn-Frank' Doe.",
    "This is a text with John/Doejlkjkjlk",
];
$pattern = "/^(?=.{25,999})(?=.*[a-z]{2})[a-zA-Z0-9äöü,.' -]+$/";
foreach ($strings as $string) {
    if (preg_match($pattern, $string)) {
        echo "Ok ==> $string" . PHP_EOL;
    } else {
        echo "error" . PHP_EOL;
    }
}
Run Code Online (Sandbox Code Playgroud)

结果

Ok ==> This is a text with John Doe
Ok ==> This is a text with Max Müstermann 
Ok ==> This is a text withJohn-Frank' Doe.
error
Run Code Online (Sandbox Code Playgroud)