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