我需要正则表达式来不允许字段中只允许空白空间(用户不应该只在字段中输入空格),但它可以允许完全空字段,也可以允许在中间带空格的字符串。
例如,如果输入字符串,如“这是一个测试”或“测试”,则正则表达式应该通过验证。另外,如果我没有在字段中输入任何内容,则应该通过验证。如果我只进入空白空间,它就会失败。
我试过下面提到的那些,但它们都失败了。
1) ^^-\\s+$-不允许我在中间输入带空格的字符串
2) ^-\s+$-不允许输入字符串
发布于 2018-12-02 03:12:28
字符串开头是否允许空格?
如果是这样的话,那么像这样的东西应该能起作用:
^$|.*\S+.*否则,这个应该能起作用:
^$|^\S+.*解释:
我将解释不带前导空格的版本,因为另一个版本只是一个稍微扩展的版本。
首先,我们用^$检查字符串是否为空。在这里Regular expression which matches a pattern, or is an empty string的另一个问题中解释了这一点。
^标记字符串的开始,我们要检查该字符串是否匹配。
\S+检查非空格字符。+确保,至少需要其中一个或更多。这包括空格、制表符、新行等.
.*匹配任何字符(以点表示)和任意数目的字符或无字符(由*表示)。
但这都是假设,您需要匹配整个字符串。如果你不是这样的话,你可以把这个短语缩短为:
^$|\S+或
^$|^\S+如果用户输入与第一个表达式匹配,那么您将知道他输入的字符串包含不为空格或为空的字符。如果它与第二个表达式匹配,您还知道它以非空格字符开头。
当然,这些表达式只是许多可能的表达式中的两个。我之所以选择它们,是因为它们易于阅读和解释(至少在我看来)。
发布于 2018-12-02 02:56:07
需要做regex吗?如果没有,你可以:
if (userInput.length === 0 || (userInput.length > 0 && userInput.trim().length)) {
console.log("user input ok");
}其中userInput是用户输入的内容。
userInput.trim()从字符串的开头和结尾删除任何空白。因此,如果该字符串的长度为0,则为false,这意味着字符串仅为空格。字符之间的任何空格都可以(userInput.trim()让这些字符单独使用)
https://stackoverflow.com/questions/53576782
复制相似问题