gpt4 book ai didi

python - 使用 web2py 模仿输入的 HTML5 模式属性的行为?

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:57 25 4
gpt4 key购买 nike

我希望使用 HTML5 和模式属性来验证我的所有表单,但一如既往,互联网上没有什么是完美的,我仍然需要备份来捕获那些不使用 HTML5 友好浏览器的用户。

我在手册中找不到正则表达式的精确表示,因此如果您知道,我将不胜感激。我用两种方式编写代码,HTML 方式和 HTML 帮助器方式(见下文),HTML5 可以在除 IE 之外的现代浏览器中按预期工作和验证,但我无法将它们转换为 python。

您将在下面看到的一个示例是表达式 pattern="[A-F0-9]{11}|[A-F0-9]{14}"这实际上强制输入仅包含大写字母 A-F 和数字 0-9。它还确保长度恰好是 11 个字符或 14 个字符。那么我将如何在 web2py 中使用它呢? IS_LENGTH 似乎只接受我的测试中的一个范围,到目前为止我只发现 IS_ALPHANUMERIC 来控制接受哪些字符。

请参阅下面的表格:

HTML:

<form id="activate_form" method="post" action="">
<label for="meid">MSIE/ESN <sup>*</sup></label>
<input name="meid" pattern="[A-Fa-f0-9]{11}|[A-Fa-f0-9]{14}" placeholder="MEID/ESN" required />
<br />
<label for="zip">Zip Code <sup>*</sup></label>
<input type="number" name="zip" pattern="{5}" placeholder="Zip Code" required />
<br />
<br />
<br /><br />
<input type="button" name="cancel" value="Cancel" onClick="history.go(-1);return true;" />
<input type="submit" name="submit" value="Activate" />
<p class="small"><sup>*</sup> denotes a required field.
</form>

HTML 助手:

form=FORM(LABEL('MEID/ESN ',(SPAN('*'))),INPUT(_name='meid',_pattern="[A-F0-9]{11}|[A-F0-9]{14}",_placeholder='MEID/ESN',_required='required',_title="The MEID/ESN number only contains 11 or 13 characters, the letters A-F, and the numbers 0-9.",requires=[IS_LENGTH(11|14),IS_NOT_EMPTY()], _onblur="this.checkValidity();"),BR(),LABEL('ZIP CODE ',(SPAN('*'))),INPUT(_name='zip',_type='number',_pattern="[0-9]{5}",_placeholder='Zip Code',_required='required',_title="We only required the five character zip code.",requires=IS_NOT_EMPTY()),BR(),BR(),BR(),BR(),INPUT(_type='button',_name='cancel',_value='Cancel',_onclick="history.go(-1);return true;"),INPUT(_type='submit',_name='submit',_value='Activate'),_method='post',_id='activate_form')
if form.accepts(request,session):
response.flash = 'Form accepted'
# redirect(URL('next'))
elif form.errors:
response.flash = 'Form has errors'
return dict(form=form)

最佳答案

如果您想坚持使用客户端验证,您也可以考虑使用 Javascript polyfill 库,例如 Webshims Lib ,它允许您在旧版浏览器中使用 HTML5 功能。另请注意,虽然客户端验证可以改善用户体验,但它不能防止恶意攻击,因此您可能仍然需要一些服务器端验证。

无论如何,对于服务器端模式验证,您可以使用 IS_MATCH() 验证器。例如:

IS_MATCH('[A-F0-9]{11}|[A-F0-9]{14}', strict=True)

将从字符串的开头开始匹配,设置strict=True还需要匹配字符串的末尾(相当于在正则表达式的末尾添加“$”)。如果您不想匹配字符串的开头,而是在字符串中的任何位置搜索模式,则可以设置 search=True

关于python - 使用 web2py 模仿输入的 HTML5 模式属性的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com