Javascript 正则表达式在开始或结束时没有空格,但允许中间有空格,但也只允许一个字符输入

Javascript 正则表达式在开始或结束时没有空格,但允许中间有空格,但也只允许一个字符输入,javascript,php,Javascript,Php,我的RegExp是 /^[A-Za-z ]*$/ 那么,我应该写什么来在开始或结束时不允许有空格,但在中间允许有空格呢?此正则表达式将匹配任何符合原始表达式的字符串,这些字符串在开始或结束时都没有空格 ^(?! )[A-Za-z ]*(?<! )$ ^(?!)[AZ-Z] *(?< P>我可能会把问题拆分:或者它根本没有空格,或者它只包含在中间。 ^[A-Za-z]*$|^[A-Za-z][A-Za-z ]*[A-Za-z]$ 它将接受“aa”、“a”、“ab c”,但不接受“a”

我的
RegExp

/^[A-Za-z ]*$/

那么,我应该写什么来在开始或结束时不允许有空格,但在中间允许有空格呢?

此正则表达式将匹配任何符合原始表达式的字符串,这些字符串在开始或结束时都没有空格

^(?! )[A-Za-z ]*(?<! )$

<代码> ^(?!)[AZ-Z] *(?< P>我可能会把问题拆分:或者它根本没有空格,或者它只包含在中间。

^[A-Za-z]*$|^[A-Za-z][A-Za-z ]*[A-Za-z]$

它将接受“aa”、“a”、“ab c”,但不接受“a”或“a”…

使用此模式在正则表达式中进行匹配

(?=(?:^\w))([A-Za-z ]+)(?<=[^ ])$
从PHP文档中

修剪-从字符串的开头和结尾删除空白(或其他字符)

我想你需要这个:

<?php 
echo trim("  spaces and spaces    "); // outputs: "spaces and spaces"
?>


@AD7six,精确地说少于2个字符。已编辑,因此它适用于单个字符strings@Paolo.Bolzoni原始正则表达式没有指定匹配的需要numbers@NambiNarayanan第二行有一个
,很好的主意是使用负正则表达式,但是不需要为单个正则表达式使用字符组,只需使用:
^(?!)[A-Za-z]*(?@Tom,你编辑你的答案和对我的评论的回答是相当不公平的,我说这没有意义。现在没有了,但在你写的原始正则表达式的开头和结尾都接受了这个数字。(它是
^[^\s][A-Za-z]*[^\s]$
)我知道,但他可能不知道trim()的存在php中的函数。@AD7six,为什么你认为
trim()
不能回答这个问题?问题中的正则表达式仅为alpha-使用trim不能强制执行字符范围,例如“ñ”或数字,根据问题的不同,使用trim在功能上完全不同。另一个“使用trim”也是如此答案。@shankar你的意思是除了明显的?Trim修改一个变量外,regex只是一个模式匹配,在它们重叠的非常有限的场景中(
$noReadingTrailingSpace=Trim($string)==$string;
)@AD7six,OP将标记一个字符串有效,该字符串的开头或结尾没有空格。因此,在这种情况下,
trim
正好起作用。老实说,在这种情况下根本不需要正则表达式。OP指定它们使用正则表达式。我想你应该允许空字符串,否则OP将ld使用了+而不是*。但听起来相当复杂。
<?php 
echo trim("  spaces and spaces    "); // outputs: "spaces and spaces"
?>