我需要正则表达式以不允许字段中仅包含空格(用户不应在字段中仅输入空格),但可以允许完全空白的字段,也可以允许字符串之间使用空格。
例如,如果我输入“ This is a test”或“ testing”之类的字符串,则正则表达式应通过验证。另外,如果我在该字段中未输入任何内容,则应通过验证。如果我只输入空格,它将失败。
我尝试了以下提到的方法,但是它们失败了。
1)^ [^-\ s] [a-zA-Z0-9_ \ s-] + $-不允许我输入介于两者之间的空格
2)^ [^-\ s] [\ w \ s-] + $-不允许我输入字符串
答案 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()
不理会那些字符)