小智 14

这应该工作:

^[^\s]+(\s+[^\s]+)*$
Run Code Online (Sandbox Code Playgroud)

如果要包含字符限制:

^[-a-zA-Z0-9-()]+(\s+[-a-zA-Z0-9-()]+)*$
Run Code Online (Sandbox Code Playgroud)

说明:

开头^和结尾$表示字符串.

考虑到我给出的第一个正则表达式,[^\s]+意思是at least one not whitespace.所以,如果你看一下,我\s+在开头放置一个,at least one white space在中间放置一个,在最后放置另一个().

如果要限制在开头和结尾接受哪些字符,请参阅第二个正则表达式.我在开始和结束时允许az,AZ,0-9和().只允许这些.

正则表达式游乐场:http://www.regexr.com/


Wik*_*żew 8

如果您有一个特定的模式,例如^[a-zA-Z0-9\s()-]+$,您想要调整以便不允许在开始和结束处有空格,您可以使用锚定在模式开始处的前瞻:

^(?!\s)(?![\s\S]*\s$)[a-zA-Z0-9\s()-]+$
 ^^^^^^^^^^^^^^^^^^^^ 
Run Code Online (Sandbox Code Playgroud)

这里,

  • (?!\s)- 如果(因为它是在之后^)紧接在字符串开头有一个空白字符,则匹配失败的负向先行
  • (?![\s\S]*\s$)- 匹配失败的负前瞻,如果(因为它也在 后执行^,之前的模式是不是消耗模式的环视)立即在字符串的开头,有尽可能多的任何 0+ 字符([\s\S]*,等于[^]*),在字符串 ( ) 末尾跟随一个空白字符$

在 JS 中,您可以使用以下等效的正则表达式声明:

var regex = /^(?!\s)(?![\s\S]*\s$)[a-zA-Z0-9\s()-]+$/
var regex = /^(?!\s)(?![^]*\s$)[a-zA-Z0-9\s()-]+$/
var regex = new RegExp("^(?!\\s)(?![^]*\\s$)[a-zA-Z0-9\\s()-]+$")
var regex = new RegExp(String.raw`^(?!\s)(?![^]*\s$)[a-zA-Z0-9\s()-]+$`)
Run Code Online (Sandbox Code Playgroud)

如果您知道没有换行符,[\s\S][^]可以替换为.

var regex = /^(?!\s)(?!.*\s$)[a-zA-Z0-9\s()-]+$/
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

JS 演示:

^(?!\s)(?![\s\S]*\s$)[a-zA-Z0-9\s()-]+$
 ^^^^^^^^^^^^^^^^^^^^ 
Run Code Online (Sandbox Code Playgroud)


Mad*_*att 5

此 RegEx 不允许在字符串/单词的开头和结尾出现空格。

^[^\s].+[^\s]$
Run Code Online (Sandbox Code Playgroud)

任何不以空格开头或结尾的字符串都将被匹配。

解释:

  1. ^ 表示字符串的开头。
  2. \s表示空格,因此[^\s]表示NOT white-space。您也可以使用\S来表示相同的内容。
  3. . 表示除换行符以外的任何字符。
  4. +是一个量词,表示一次或多次。这意味着,后面的字符+可以重复一次或多次。

您可以将用作 RegEx 备忘单。

  • 我们如何让它在没有 3 个字符限制的情况下工作?所以即使用户输入一个字符它也应该通过验证 (3认同)

Apr*_*ion 5

如果字符串必须至少有 1 个字符长,如果中间允许换行符和任何其他字符一起,并且第一个+最后一个字符实际上可以是除空格之外的任何字符(包括@#$!...),那么您正在寻找为了:

^\S$|^\S[\s\S]*\S$
Run Code Online (Sandbox Code Playgroud)

解释和单元测试:https : //regex101.com/r/uT8zU0


小智 5

这对我有用:

^[^\s].+[a-zA-Z]+[a-zA-Z]+$
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。