pyqt QLineEdit编辑框的输入内容限制(python)

 

实现要求:编辑框输入的内容为中文6位和英文12位

实现思路:使用正则表达式,设置编辑框的验证器setValidator

"""主要代码段"""
QlineEdit.setValidator(QRegExpValidator(QRegExp("正则表达式"),self))

  正则表达式(菜鸟工具)

  正则表达式语法(菜鸟)

  正则表达式匹配规则
 


^符号表示开头一样,$符号用来匹配那些以给定模式结尾的字符串
当在一组方括号里使用 ^ 时,^表示"非"或"排除"的意思,用来剔除某个字符。
    如:^[^0-9][0-9]$  表示第一个字符不能是数字,第二个是数字


此处主要使用到的正则表达式:
由26个英文字母组成的字符串:^[A-Za-z]+$
汉字:^[\u4e00-\u9fa5]{0,}$
双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
 

 

以下是完整测试代码:


from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys

class regex_qlineEdit(QWidget):
    def __init__(self):
        super().__init__()
        self.uiinit()
    def uiinit(self):
        self.setFixedSize(1200, 700)
        self.regx_edit = QLineEdit(self)
        self.regx_edit.resize(500,100)
        # self.regx_edit.setValidator(QRegExpValidator(QRegExp("[A-Za-z][1-9][0-9]{0,2}"),self))#设置验证器
        # self.regx_edit.setValidator(QRegExpValidator(QRegExp("[a-zA-Z0-9]+${5}"),self))#设置验证器
        # self.regx_edit.setValidator(QRegExpValidator(QRegExp("[0-9]*$"),self))#输入数字,没有限制位数
        # self.regx_edit.setValidator(QRegExpValidator(QRegExp("[0-9]{12}"),self))#最多只能输入12位数字
        # self.regx_edit.setValidator(QRegExpValidator(QRegExp("^[\u4e00-\u9fa5]{0,}$"),self))#输入汉字
        # self.regx_edit.setValidator(QRegExpValidator(QRegExp("^[\u4e00-\u9fa5]{6}"),self))#输入汉字,限制6
        self.regx_edit.setValidator(QRegExpValidator(QRegExp("^[\u4e00-\u9fa5]{6}&|^[a-zA-Z]{12}&"),self))#输入汉字6个,英文输入12个
if __name__ == "__main__":
    app = QApplication(sys.argv)  # 创建一个应用程序
    wid = regex_qlineEdit()
    wid.show()
    sys.exit(app.exec())  # 开始执行应用程序,并进入消息循环,调用程序并转移进程

 

总结:
^[\u4e00-\u9fa5]{6}&|^[a-zA-Z]{12}&
^起始符号
$结束符号

^[匹配内容]{位数限制}$ 
    如:^[\u4e00-\u9fa5]{0,}$  不限制输入中文
    如:^[\u4e00-\u9fa5]{6}$  限制输入6位中文

|或运算的使用
    ^[\u4e00-\u9fa5]{6}&|^[a-zA-Z]{12}&   限制输入6位中文或12位英文

 

 

你可能感兴趣的:(python,正则表达式)