JavaScript中的正则表达式不仅不允许字段中包含空格,而且允许包含空格的字符串,还允许包含空字段

时间:2018-12-02 02:21:25

标签: javascript regex

我需要正则表达式以不允许字段中仅包含空格(用户不应在字段中仅输入空格),但可以允许完全空白的字段,也可以允许字符串之间使用空格。

例如,如果我输入“ This is a test”或“ testing”之类的字符串,则正则表达式应通过验证。另外,如果我在该字段中未输入任何内容,则应通过验证。如果我只输入空格,它将失败。

我尝试了以下提到的方法,但是它们失败了。

1)^ [^-\ s] [a-zA-Z0-9_ \ s-] + $-不允许我输入介于两者之间的空格

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

2 个答案:

答案 0 :(得分:4)

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

如果是这样,那么类似的方法应该起作用:

^$|.*\S+.*

否则,这应该可以解决问题:

^$|^\S+.*

说明:

我将在不带空格的情况下解释该版本,因为另一个只是该版本的稍微扩展的版本。

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

^标记了我们要检查是否匹配的字符串的开头。

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

.*匹配任何字符(以点表示)和任意数量的字符,或不匹配(以*表示)。


所有这些都假设您需要匹配整个字符串。如果您不是这种情况,则可以将表达式缩短为:

^$|\S+

^$|^\S+

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

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

答案 1 :(得分:0)

需要正则表达式吗?如果没有,您可以这样做:

class App(QMainWindow):

    def __init__(self):

        # initUI
        self.initUI()

        # define plots axis and labels
        self.pc1 = pg.PlotDataItem(name="ACC")
        self.pw1.addItem(self.pc1)
        self.pw1.setLabel('left', 'LEFT FOOT ACC', units='m/s^2')
        self.pw1.setLabel('bottom', 'Time', units='s')

        # timer
        self.timer = pg.QtCore.QTimer()

    def initUI(self):

        # create subplot grid
        self.pw1 = pg.PlotWidget()
        grid_layout.addWidget(self.pw1,2,0,1,4)

        # create start/stop button
        self.on_start = QPushButton("START")
        self.on_stop = QPushButton("STOP")
        grid_layout.addWidget(self.on_start,4,0,1,8)
        grid_layout.addWidget(self.on_stop,5,0,1,8)

    def on_start_clicked(self):
        # do something
        if not self.timer.isActive():
            self.timer.timeout.connect(self.updateplot)
            self.timer.start(8)


    def on_stop_clicked(self):
        # do something

    def updateplot(self):
        while (self.lcom.loop is True) and (not self.l_queue.empty()):

            self.data_out.append(self.l_queue.get())
            self.time_out.append(self.t)
            if len(self.data_out) != 0:
                self.pc1.setData(np.array(self.data_out)[:,2],pen=(255,0,0))
                self.pc1.setData(np.array(self.data_out)[:,3],pen=(0,255,0))
                self.pc1.setData(np.array(self.data_out)[:,4],pen=(0,0,255))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

if (userInput.length === 0 || (userInput.length > 0 && userInput.trim().length)) { console.log("user input ok"); } 是用户输入的位置。

userInput从字符串的开头和结尾删除所有空格。因此,如果那的长度是0,那将是错误的,并且意味着该字符串只是空格。字符之间的空格都可以({userInput.trim()不理会那些字符)