您好,我正在尝试为dash_core_components.Input
“模式”输入属性创建一个正则表达式,以验证年份范围输入。
我有下面的Python v3.6.3代码,该代码提供regexp来验证输入格式(每位有效...):
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" >> Valid
"2020:2018" >> Invalid
dash_core_components.Input
的输入?
答案 0 :(得分:0)
一个非常简单的解决方法是在回调中包含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
作为输入框旁边的文本区域,以显示是否符合正则表达式。
如果regex正确传递了输入,则进一步调整返回值以继续执行程序的其余部分。