QLineEdit正则表达式文件名
时间: 2023-06-29 20:13:37 浏览: 73
可以使用以下正则表达式匹配文件名:
```
^[^\\/?%*:|"<>\.]+\.[^\\/?%*:|"<>\.]+$
```
该正则表达式匹配不包含以下特殊字符的文件名:
- 反斜杠 \
- 正斜杠 /
- 问号 ?
- 百分号 %
- 冒号 :
- 星号 *
- 竖线 |
- 双引号 "
- 尖括号 <>
- 句号 .
同时,该正则表达式要求文件名包含一个点来分隔文件名和扩展名。
相关问题
QLineEdit正则表达式文件名,请写出测试代码
好的,以下是一个使用QLineEdit和正则表达式限制文件名输入的示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QVBoxLayout
from PyQt5.QtGui import QRegExpValidator
from PyQt5.QtCore import QRegExp
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('File Name Test')
self.setGeometry(300, 300, 250, 100)
layout = QVBoxLayout()
label = QLabel('Enter a file name:')
layout.addWidget(label)
line_edit = QLineEdit()
layout.addWidget(line_edit)
# 设置正则表达式限制文件名输入
reg_exp = QRegExp('[^\\\\/:*?"<>|\r\n]+$') # 不包含指定字符的文件名
validator = QRegExpValidator(reg_exp, line_edit)
line_edit.setValidator(validator)
self.setLayout(layout)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
sys.exit(app.exec_())
```
该代码使用了QLineEdit和QRegExpValidator来实现对文件名的限制,只允许输入不包含反斜杠、冒号、星号、问号、双引号、尖括号、竖线和换行符的文件名。
QLineEdit设置正则表达式度分秒
如果您想要使用QLineEdit设置正则表达式来输入度分秒格式的数据,可以使用以下代码:
```python
import re
from PyQt5.QtCore import QRegExp
from PyQt5.QtGui import QRegExpValidator
from PyQt5.QtWidgets import QLineEdit
# 定义度分秒的正则表达式
degree_regex = r'^\d{1,3}\.\d{1,8}[°|d]\d{1,2}\'\d{1,2}(\.\d{1,3})?\"?[N|S|E|W]$'
class DegreeLineEdit(QLineEdit):
def __init__(self, parent=None):
super(DegreeLineEdit, self).__init__(parent)
# 创建QRegExp对象
regex = QRegExp(degree_regex)
# 创建QRegExpValidator对象
validator = QRegExpValidator(regex, self)
# 设置QLineEdit的validator
self.setValidator(validator)
```
这样,就可以创建一个继承自QLineEdit的DegreeLineEdit类,用它来输入度分秒格式的数据,并且自动验证输入的数据是否符合正则表达式的要求。