Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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 正则表达式-字母和空格,但至少一个字母_Php_Regex - Fatal编程技术网

Php 正则表达式-字母和空格,但至少一个字母

Php 正则表达式-字母和空格,但至少一个字母,php,regex,Php,Regex,以下是我的正则表达式: /^[a-zA-Z\s]+$/ 它只授权字母和空格,但如何确保至少有一个字母和最多30个字符,包括字母和空格?您可以使用此基于前瞻性的正则表达式: /^(?=[^A-Za-z]*[a-zA-Z])[a-zA-Z\s]{1,30}$/ 从头开始 向前看,确保某处有一封信 检查是否有1到30个字符 检查直到结尾处是否只有字母或空格 /^(?={0,29}[A-z])[A-z]{1,30}$/ 编辑:用于接受所有空白。将其更改为常规空格。@user3022323:是的,我

以下是我的正则表达式:

/^[a-zA-Z\s]+$/

它只授权字母和空格,但如何确保至少有一个字母和最多30个字符,包括字母和空格?

您可以使用此基于前瞻性的正则表达式:

/^(?=[^A-Za-z]*[a-zA-Z])[a-zA-Z\s]{1,30}$/
  • 从头开始
  • 向前看,确保某处有一封信
  • 检查是否有1到30个字符
  • 检查直到结尾处是否只有字母或空格
  • /^(?={0,29}[A-z])[A-z]{1,30}$/



    编辑:用于接受所有空白。将其更改为常规空格。

    @user3022323:是的,我知道这个规则应该有效,但我对无法解释的否决票感到惊讶。他/她可能会被你先告诉它不要接受a-Za-z,然后告诉它只接受这个事实弄糊涂了。。。(我也不太明白。)@CasNouwens:这是一种前瞻性的方法,它只是确保正则表达式中至少有一个字母。因此,0个或多个非字母后跟单个字母确保至少有1个字母。@anubhava因此,如果我理解正确,前瞻“扫描”整个输入。然后继续测试输入的其余部分,所有内容都在前面,它不会扫描完整的输入。它向前看,直到得到它要找的东西。这在字符串的开头不允许有空格。字符类
    [A-z]
    包括
    [
    \`,
    ]
    ^
    \`和
    `