如果字符串仅包含空格,则匹配正则表达式?
Regex expression that matches if the string contain only spaces?
我正在使用 formik with yup 来验证表单。在一个输入中,如果它仅包含空格,则它通过,这对我的用例无效。所以我通过 Google 找到某种正则表达式,所以如果字符串只有空格,它会抛出一些消息,但我没有找到任何东西。
nome: string()
.min(3, '* Deve conter no mínimo 3 caracteres')
.required('* Este campo é obrigatório')
.matches(/[^\s*].*[^\s*]/g, '* This field cannot contain only blankspaces'),
问题是,当它达到 3 个字符时,即使满足要求的 yup 条件,验证也不起作用,并且与正则表达式的匹配不会阻止空格。到目前为止,我设法解决了以下问题:
nome: values.nome.trim().replace(/\s+/g, ' ')
但是使用正确的正则表达式我可以实时抛出错误。
既然你想在出现任何白色 space 的情况下进行匹配,请尝试:
nome: string()
.min(3, '* Deve conter no mínimo 3 caracteres')
.required('* Este campo é obrigatório')
.matches(/^(\S+$)/g, '* This field cannot contain only blankspaces'),
您可以使用
/^(?!\s+$).*/
/^(?!\s+$)/
/^\s*\S.*$/
/^\s*\S[^]*$/
/^\s*\S[\s\S]*$/
前两个正则表达式将匹配任何不等于 1 个或多个空格的字符串。
最后的第三个、第四个和第五个匹配包含至少一个非空白字符的字符串。
详情
^
- 字符串开头
(?!\s+$)
- 如果当前位置右侧有 1 个或多个空格和字符串结尾,则匹配失败的否定前瞻
.*
- 除换行字符外的 0 个或更多字符,尽可能多
\s*\S.*
- 零个或多个空格,一个非空格,然后是换行符以外的任何零个或多个字符
\s*\S[^]*
/ \s*\S[\s\S]*
- 与上面相同,但包括换行符在内的任何字符都可以出现在非空白字符 之后
$
- 字符串结尾
.matches(/^(\S+$)/, '* This field cannot contain only blankspaces')
对我也有用。
标注大写S但不标注小写s
我正在使用 formik with yup 来验证表单。在一个输入中,如果它仅包含空格,则它通过,这对我的用例无效。所以我通过 Google 找到某种正则表达式,所以如果字符串只有空格,它会抛出一些消息,但我没有找到任何东西。
nome: string()
.min(3, '* Deve conter no mínimo 3 caracteres')
.required('* Este campo é obrigatório')
.matches(/[^\s*].*[^\s*]/g, '* This field cannot contain only blankspaces'),
问题是,当它达到 3 个字符时,即使满足要求的 yup 条件,验证也不起作用,并且与正则表达式的匹配不会阻止空格。到目前为止,我设法解决了以下问题:
nome: values.nome.trim().replace(/\s+/g, ' ')
但是使用正确的正则表达式我可以实时抛出错误。
既然你想在出现任何白色 space 的情况下进行匹配,请尝试:
nome: string()
.min(3, '* Deve conter no mínimo 3 caracteres')
.required('* Este campo é obrigatório')
.matches(/^(\S+$)/g, '* This field cannot contain only blankspaces'),
您可以使用
/^(?!\s+$).*/
/^(?!\s+$)/
/^\s*\S.*$/
/^\s*\S[^]*$/
/^\s*\S[\s\S]*$/
前两个正则表达式将匹配任何不等于 1 个或多个空格的字符串。
最后的第三个、第四个和第五个匹配包含至少一个非空白字符的字符串。
详情
^
- 字符串开头(?!\s+$)
- 如果当前位置右侧有 1 个或多个空格和字符串结尾,则匹配失败的否定前瞻.*
- 除换行字符外的 0 个或更多字符,尽可能多\s*\S.*
- 零个或多个空格,一个非空格,然后是换行符以外的任何零个或多个字符\s*\S[^]*
/\s*\S[\s\S]*
- 与上面相同,但包括换行符在内的任何字符都可以出现在非空白字符 之后
$
- 字符串结尾
.matches(/^(\S+$)/, '* This field cannot contain only blankspaces')
对我也有用。
标注大写S但不标注小写s