首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript中的正则表达式不允许字段中的空格,而是允许带空格的字符串,也允许空字段

javascript中的正则表达式不允许字段中的空格,而是允许带空格的字符串,也允许空字段
EN

Stack Overflow用户
提问于 2018-12-02 02:21:24
回答 2查看 3.7K关注 0票数 2

我需要正则表达式来不允许字段中只允许空白空间(用户不应该只在字段中输入空格),但它可以允许完全空字段,也可以允许在中间带空格的字符串。

例如,如果输入字符串,如“这是一个测试”或“测试”,则正则表达式应该通过验证。另外,如果我没有在字段中输入任何内容,则应该通过验证。如果我只进入空白空间,它就会失败。

我试过下面提到的那些,但它们都失败了。

1) ^^-\\s+$-不允许我在中间输入带空格的字符串

2) ^-\s+$-不允许输入字符串

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-02 03:12:28

字符串开头是否允许空格?

如果是这样的话,那么像这样的东西应该能起作用:

代码语言:javascript
复制
^$|.*\S+.*

否则,这个应该能起作用:

代码语言:javascript
复制
^$|^\S+.*

解释:

我将解释不带前导空格的版本,因为另一个版本只是一个稍微扩展的版本。

首先,我们用^$检查字符串是否为空。在这里Regular expression which matches a pattern, or is an empty string的另一个问题中解释了这一点。

^标记字符串的开始,我们要检查该字符串是否匹配。

\S+检查非空格字符。+确保,至少需要其中一个或更多。这包括空格、制表符、新行等.

.*匹配任何字符(以点表示)和任意数目的字符或无字符(由*表示)。

但这都是假设,您需要匹配整个字符串。如果你不是这样的话,你可以把这个短语缩短为:

代码语言:javascript
复制
^$|\S+

代码语言:javascript
复制
^$|^\S+

如果用户输入与第一个表达式匹配,那么您将知道他输入的字符串包含不为空格或为空的字符。如果它与第二个表达式匹配,您还知道它以非空格字符开头。

当然,这些表达式只是许多可能的表达式中的两个。我之所以选择它们,是因为它们易于阅读和解释(至少在我看来)。

票数 6
EN

Stack Overflow用户

发布于 2018-12-02 02:56:07

需要做regex吗?如果没有,你可以:

代码语言:javascript
复制
    if (userInput.length === 0 || (userInput.length > 0 && userInput.trim().length)) {
        console.log("user input ok");
    }

其中userInput是用户输入的内容。

userInput.trim()从字符串的开头和结尾删除任何空白。因此,如果该字符串的长度为0,则为false,这意味着字符串仅为空格。字符之间的任何空格都可以(userInput.trim()让这些字符单独使用)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53576782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档