python - 有效年份范围的正则表达式
问题描述
目的:
您好,我正在尝试为dash_core_components.Input
“模式”输入属性创建一个正则表达式来验证年份范围输入。
我有以下 Python v3.6.3 代码,它提供了用于验证输入格式的正则表达式(对我来说有效......):
import datetime as dt
full_year_ = dt.datetime.now().year
mill_ = str(full_year_)[0]
century_ = str(full_year_)[1]
decade_ = str(int(str(full_year_)[2]))
prev_decade_ = str(int(str(full_year_)[2]) - 1)
year_ = str(full_year_)[3]
prior_decades = f'{mill_}{century_}[0-{prev_decade_}][0-9]'
current_decade = f'{mill_}{century_}{decade_}[0-{year_}]'
def century():
return f'^({prior_decades})|({current_decade})$'
def century_set():
# Acceptable Examples: 2018, 2019, 2020 | 2018:2020
return f'^\s*({prior_decades}|{current_decade})([,\s]+{prior_decades}|[,\s]+{current_decade}|[,\s]*)*$|'\
f'^\s*({prior_decades}|{current_decade})(\s*:\s*{prior_decades}|\s*:\s*{current_decade}|\s*)?$'
问题陈述:
如果可能的话,我想实现的century_set()
是能够使用正则表达式来验证范围是否有效。
换句话说:
"2018:2020" >> 有效
"2020:2018" >> 无效
或者...
是否有一种迂回的方法来应用额外的标准来验证输入dash_core_components.Input
?
解决方案
一个非常简单的解决方法可能是century_set()
在回调中。
所以像:
@app.callback(Output('e_msg', 'value'),
[Input('year_input_box', 'value')]
def validate_yr(year_input):
error_msg = century_set(year_input) # Modify century_set to take a year as input and after validating, return an error message if not satisfying the regex criteria
return error_msg
然后error_msg
用作输入框旁边的文本区域以显示是否不符合正则表达式。
如果正则表达式正确传递输入,则进一步调整您的返回以继续执行程序的其余部分。
推荐阅读
- c++ - 如何从 TBitmap 获取像素数组?
- java - Android检查Arraylist是否包含另一个Arraylist?
- javascript - x 不是一个函数 - 为什么这个函数不起作用?
- javascript - 在 React JS 中的图标上方有文本
- python - 使用 youtube API 返回 youtube livechat 消息的 Python 脚本会在一段时间后返回奇怪的 KeyError 和 NoneType 错误
- excel - 为什么 Excel SUMIF 函数返回 #ERROR
- java - EntityManager 的异常行为
- r - R:检查函数是否已作为参数提供给另一个函数的正确方法
- c - 在不使用编译器扩展的情况下定义类型检查 containerof 宏
- swift - 带有列表的选项卡视图抛出错误 UITableView 被告知在不位于视图层次结构中的情况下布局其可见单元格和其他内容