【发布时间】:2014-02-07 05:02:51
【问题描述】:
刚刚遇到一行代码,它强制将用户的文本输入到对话框的字段中。无论输入如何,最后都只允许输入 IP 格式,例如:
123.456.789.100
regexIP=QtCore.QRegExp("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
我想为 lineedit 验证器编写一个正则表达式,它会自动用下划线替换所有空格、逗号、句点、破折号、减号、美元符号(除字母和数字之外的所有内容)。 我还想将前三个字母大写,然后在它们后面插入一个下划线,无论用户输入什么。
例如,如果用户键入:
this is a beautiful day 77
正则表达式验证器会自动将其更改为:
THI_Sis_a_beatiful_day_77
她是 PyQt 部分代码的样子:
my_regex = QtCore.QRegExp("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
my_QLineEdit = QtGui.QLineEdit()
my_validator = QtGui.QRegExpValidator(my_regex, my_QLineEdit)
my_QLineEdit.setValidator( my_validator )
再一次,上面的代码只是一个例子。我想要的是写一个正则表达式把它放在括号内:
my_regex = QtCore.QRegExp(my_regex_expression_goes_here)
此 my_regex 表达式将强制用户永远不会在文本字段 (lineedit) 中输入空格、句点、逗号、美元符号。理想情况下,我想将前三个字母大写,然后加上下划线。但这已经不是什么大问题了。让我们专注于如何实现一些基本的正则表达式,这样用户就不能输入空格、减号、美元符号等。只允许使用字母和数字......
【问题讨论】:
-
你有一些代码要显示吗?
-
这是一个正则表达式,您可以将其用于第一部分以匹配您想要的内容:
[^a-zA-Z0-9]+?。然后只需替换为_。 -
你确定你想要的结果不是:
THI_s_is_a_beautiful_day_77而不是你写的吗? -
连续的非字母数字字符是否替换为一个或多个下划线?
-
"...您确定您想要的结果不是:THI_s_is_a_beautiful_day_77 而不是您所写的吗?..." 我们如何做到这一点?
标签: python regex pyqt validation