如果字符串仅包含空格则匹配的正则表达式?

cri*_*res 4 javascript regex reactjs yup formik

我正在使用formikyup来验证表单。在一个输入中,如果它仅包含空格,则它会通过,这对我的用例无效。所以我通过谷歌找到了某种正则表达式,所以如果字符串只有空格,它会抛出一些消息,但我没有找到任何东西。

\n\n
nome: string()\n      .min(3, \'* Deve conter no m\xc3\xadnimo 3 caracteres\')\n      .required(\'* Este campo \xc3\xa9 obrigat\xc3\xb3rio\')\n      .matches(/[^\\s*].*[^\\s*]/g, \'* This field cannot contain only blankspaces\'),\n
Run Code Online (Sandbox Code Playgroud)\n\n

这样做的问题是,当它达到 3 个字符时,即使有必需的 yup 条件,验证也不起作用,并且与正则表达式匹配不会阻塞空格。到目前为止,我已经解决了:\nnome: values.nome.trim().replace(/\\s+/g, \' \')但是使用正确的正则表达式,我可以实时抛出错误。

\n

Wik*_*żew 9

您可以使用

/^(?!\s+$).*/
/^(?!\s+$)/
/^\s*\S.*$/
/^\s*\S[^]*$/
/^\s*\S[\s\S]*$/
Run Code Online (Sandbox Code Playgroud)

前两个正则表达式将匹配任何不等于 1 个或多个空格的字符串。

最后第三个、第四个和第五个匹配至少包含一个非空白字符的字符串。

请参阅正则表达式演示

细节

  • ^- 字符串的开头
  • (?!\s+$)- 如果有 1 个或多个空格且字符串末尾紧邻当前位置的右侧,则负向前视会使匹配失败
  • .*- 0 个或更多除换行符之外的字符,尽可能多
  • \s*\S.*- 零个或多个空格,一个非空格,然后是除换行符之外的任何零个或多个字符
  • \s*\S[^]*/ \s*\S[\s\S]*- 与上面相同,但包括换行符在内的任何字符都可以出现在非空白字符之后
  • $- 字符串结尾