我想要一个正则表达式来表示文本,如果其中包含至少2个字母的1个单词,并且允许至少25个字母或数字,并且还允许(0-9äöü,.'-),则允许使用正则表达式,如果那里有其他字母或数字,则应该给出一个错误。
例:
正确:
假:
正则表达式:
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)
我不确定如何在代码中获得解决方案。
您可能会做的是使用正向前瞻来断言长度为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+次$ 字符串结尾例如(我使字符串变长,以使最小长度为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)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |