针对特定数字或特定单词的正则表达式

时间:2012-05-18 19:49:12

标签: regex

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

现在我有这个正则表达式/\b4|four\b/gi,这是我在这个网站上找到的变种。问题是用户可以输入458或其他内容。那么,有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

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

/^(4|four)$/i

将匹配整个字符串为4或4。 ^仅在开头匹配,$仅在结尾处匹配。 /i表示不区分大小写(因此也会接受FOUR)。有些语言不会采用这样的标记(在这些标记中,您必须检查有关如何进行不敏感匹配的文档)。如果您不能使用不区分大小写的匹配,则可以改为:

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

当然,无论你在做什么语言,也可能都有平等比较。所以你可以做(​​例如)

if (str == "4" || str == "four")

答案 1 :(得分:0)

尝试:

^4|four$

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

答案 2 :(得分:0)

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

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

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

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

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

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

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