0

对于表单上的安全问题,我希望用户输入4orfour或后者的任何变体。

现在我有这个正则表达式/\b4|four\b/gi,它是我在这个网站上找到的一个变体。问题是用户可以输入458什么的。那么,有人可以帮帮我吗?

4

3 回答 3

0

我不确定您所说的“后者的任何变化”是什么意思,但是:

/^(4|four)$/i

将匹配 4 或 4 的整个字符串。比赛^只在开始和$结束时进行。/i表示不区分大小写(因此也可以接受 FOUR)。有些语言不采用这样的标志(在它们中,您必须查看有关如何进行不敏感匹配的文档)。如果你不能使用不区分大小写的匹配,你可以这样做:

/^(4|[fF][oO][uU][rR])$/i

当然,无论您使用什么语言,都可能有相等比较。所以你可以这样做(例如)

if (str == "4" || str == "four")
于 2012-05-18T19:56:59.490 回答
0

尝试:

^4|four$

这将匹配“4”和“四”。根据您使用的编程语言,可能会有不区分大小写的选项,例如 C# 的RegexOptions.IngoreCase

于 2012-05-18T19:58:16.227 回答
0

因此,您应该为此使用不区分大小写的比较。一些(也许是大多数)正则表达式风格将支持(?i)表示不区分大小写的模式。

^(?i)(?:4|four)$

但是,如果这是 JavaScript,那么您可以使用更像您开始使用的语法...

/^(?:4|four)$/i

在这种情况下,这/i是不区分大小写的。但我删除/g了,因为它是用于全局匹配的,这里不需要。

请注意,我也放入4|four了一个(?:non capturing)组。(capturing)当您不需要对捕获的值执行任何操作时,这比使用传统组更有效。

然后围绕所有内容的^$锚点将确保您没有额外的前导或后续字符。

于 2012-05-18T20:07:51.067 回答