我需要为表单验证编写一个正则表达式,允许字符串中的空格,但不允许只有空格.
例如 - 'Chicago Heights, IL'将是有效的,但如果用户只是按空格键任意次数并点击输入表单将无法验证.之前的验证,我已经试过运行if (foo != null)然后运行正则表达式,但按下空格键仍然注册的人物,所以这是行不通的.这是我现在使用的允许空格:
^[-a-zA-Z0-9_:,.' ']{1,100}$
Run Code Online (Sandbox Code Playgroud)
以下内容将以书面形式回答您的问题,但请参阅我之后的附加说明:
^(?!\s*$)[-a-zA-Z0-9_:,.' ']{1,100}$
Run Code Online (Sandbox Code Playgroud)
说明:这(?!\s*$)是一个负向前瞻.这意味着:"以下字符与子模式不匹配\s*$." 当您考虑子模式时,它意味着:"以下字符既不能是空字符串,也不能是一直到结尾的空格字符串.因此,在此之后必须至少有一个非空白字符.字符串." 一旦你完成了这个规则,你可以自由地在你的角色类中留出空格.
额外注意:我认为你没有按照' '你的意愿行事.看起来你试图表示一个空格字符,但正则表达式解释'为一个字面撇号.在字符类中,' '意味着"匹配任何字符,'空格字符或'"(注意第二个'字符是多余的).我怀疑你想要的更像是这样的:
^(?!\s*$)[-a-zA-Z0-9_:,.\s]{1,100}$
Run Code Online (Sandbox Code Playgroud)
你可以使用简单的:
^(?=.*\S).+$
Run Code Online (Sandbox Code Playgroud)
如果你的正则表达式引擎支持积极的前瞻.此表达式至少需要一个非空格字符.
在rubular上看到它.