最近在写网络调试助手时想要找到能对IPv4地址进行输入验证的验证器,查找资料,找到了QRegExpValidator类
QRegExpValidator类
创建方法
1 2
| QRegExpValidator(parent: QObject = None) QRegExpValidator(QRegExp, parent: QObject = None)
|
其中QRegExp为Qt的正则表达式类
使用举例
1 2 3 4 5 6 7 8 9 10
| class IPValidator(QRegExpValidator): """自建的类,继承自QRegExpValidator""" def validate(self, input: str, pos: int) -> [QValidator.State, str, int]: input = input.replace('。', '.') return super().validate(input, pos)
reg_ex = QRegExp("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)") ip_input_validator = IPValidator(reg_ex, self.__ui.TargetIPLineEdit) self.__ui.TargetIPLineEdit.setValidator(ip_input_validator)
|
QRegExp类
Qt官方文档
元字符匹配规则
| 字符 |
匹配项 |
例子 |
| . |
任意单个字符 |
1.3可匹配123,143,… |
| ^ |
字符串首串 |
^12可匹配123,不可匹配312 |
| [] |
括号内输入的任意字符 |
[123]可匹配1,2或3 |
| * |
任意数量的前导字符 |
1*2可以为任意数量个1(甚至没有), 后面跟一个2 |
| + |
至少一个前导字符 |
1+2必须为一个或多个1, 后跟一个2 |
| ? |
一个前导字符或为空 |
1?2可以为2或者12 |
统配模式