小编Yub*_*ree的帖子

如何在输入元素的 HTML 模式属性中设置 RegEx 全局标志?

我想在将表单输入(用户名+密码)发送到服务器(php)之前对客户端进行验证。\n因此我在输入标记中应用了模式属性。\n我想出了一个在服务器上执行此操作的 RegEx 表达式边:

\n
(preg_match_all(\'/^[a-zA-Z0-9. _\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f\xc3\x84\xc3\x96\xc3\x9c@-]{1,50}$/\', $_POST[\'username\']) == 0)\n
Run Code Online (Sandbox Code Playgroud)\n

因此,使用 preg_match_all (而不是 preg_match)设置全局标志。

\n

现在我想在 HTML 表单中的模式属性中实现相同的正则表达式。\n HTML 标准定义模式属性中的正则表达式遵循JavaScript中的正则表达式,它将表达式划分为用逗号分隔的“模式、标志”。我会把它翻译成 HTML,如下所示:

\n
pattern="^[a-zA-Z0-9. _\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f\xc3\x84\xc3\x96\xc3\x9c@-]{1,50}$,g"\n
Run Code Online (Sandbox Code Playgroud)\n

那是行不通的。

\n

我发现的所有 JavaScript RegEx 验证器都将模式括在斜杠中:

\n
/^[a-zA-Z0-9. _\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f\xc3\x84\xc3\x96\xc3\x9c@-]{1,50}$/\n
Run Code Online (Sandbox Code Playgroud)\n

并说,全局标志将位于最后一个斜杠后面:

\n
pattern="/^[a-zA-Z0-9. _\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f\xc3\x84\xc3\x96\xc3\x9c@-]{1,50}$/g"\n
Run Code Online (Sandbox Code Playgroud)\n

这也行不通。

\n

Mozilla在他们的开发者指南中也指出(我也在其他地方读过):

\n
\n

模式文本周围不应指定正斜杠。

\n
\n

那么,如何将全局标志获取到输入元素的模式属性中呢?

\n

html regex

2
推荐指数
1
解决办法
2042
查看次数

标签 统计

html ×1

regex ×1