Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将Unicode字符串的正则表达式与至少一个空格匹配_Php_Regex_String_Unicode_Php 5.3 - Fatal编程技术网

Php 将Unicode字符串的正则表达式与至少一个空格匹配

Php 将Unicode字符串的正则表达式与至少一个空格匹配,php,regex,string,unicode,php-5.3,Php,Regex,String,Unicode,Php 5.3,我正在尝试验证必须符合以下规则的字符串: 允许的字符为: 所有Unicode字母[a-z][a-z]和其他字母,如(á、é、í、ó、ú、ü、ñ等) 所有数字[0-9] 仅限这些特殊字符(空格、撇号、破折号、点) 字符串必须至少包含4个字母数字字符。空格、撇号、破折号和点不计入最小长度 字符串不能以数字、撇号、破折号或点开头 字符串的字符之间必须至少有一个空格。请注意,字符串是为前导空格和尾随空格修剪的,因此永远不会有前导空格或尾随空格 这就是我取得的成绩: if (preg_match("/

我正在尝试验证必须符合以下规则的字符串:

  • 允许的字符为:
    • 所有Unicode字母[a-z][a-z]和其他字母,如(á、é、í、ó、ú、ü、ñ等)
    • 所有数字[0-9]
    • 仅限这些特殊字符(空格、撇号、破折号、点)
  • 字符串必须至少包含4个字母数字字符。空格、撇号、破折号和点不计入最小长度
  • 字符串不能以数字、撇号、破折号或点开头
  • 字符串的字符之间必须至少有一个空格。请注意,字符串是为前导空格和尾随空格修剪的,因此永远不会有前导空格或尾随空格
  • 这就是我取得的成绩:

    if (preg_match("/^[\p{L}\p{M}][\s\p{L}\p{M}-'\.]{4,}$/u", $name, $matches)) {
         echo "Match was found: '{$matches[0]}' in '$name'<br />";
    }
    

    这可能有效,但尚未进行测试。
    编辑:嗯,在测试/调试之后,这就是我得到的,祝你好运

     # ^(?=[\pL\pN\s'\-.]+$)(?=[^\pL\pN]*(?:[\pL\pN][^\pL\pN]*){4,}$)(?![\pN'\-.])(?=\S+\s+\S)
    
     ^ 
    
     (?= [\pL\pN\s'\-.]+ $ )        # Allowed characters
    
     (?=                            # At least 4 alphanumeric chars
          [^\pL\pN]* 
          (?: [\pL\pN] [^\pL\pN]* ){4,}
          $ 
     )
    
     (?! [\pN'\-.] )                # Cannot start with these
    
     (?=                            # At least 1 whitespace after first char / before last char
          \S+ \s+ \S 
     )
    

    您所有的'-->商品都违反了规则4。没关系,请参见示例。+1抱歉,回复太晚。它就像一个符咒:D非常感谢
     # ^(?=[\pL\pN\s'\-.]+$)(?=[^\pL\pN]*(?:[\pL\pN][^\pL\pN]*){4,}$)(?![\pN'\-.])(?=\S+\s+\S)
    
     ^ 
    
     (?= [\pL\pN\s'\-.]+ $ )        # Allowed characters
    
     (?=                            # At least 4 alphanumeric chars
          [^\pL\pN]* 
          (?: [\pL\pN] [^\pL\pN]* ){4,}
          $ 
     )
    
     (?! [\pN'\-.] )                # Cannot start with these
    
     (?=                            # At least 1 whitespace after first char / before last char
          \S+ \s+ \S 
     )