对于表单上的安全问题,我希望用户输入4
或four
或后者的任何变体。
现在我有这个正则表达式/\b4|four\b/gi
,这是我在这个网站上找到的变种。问题是用户可以输入458
或其他内容。那么,有人可以帮助我吗?
答案 0 :(得分:0)
我不确定“后者的任何变化”是什么意思,但是:
/^(4|four)$/i
将匹配整个字符串为4或4。 ^
仅在开头匹配,$
仅在结尾处匹配。 /i
表示不区分大小写(因此也会接受FOUR)。有些语言不会采用这样的标记(在这些标记中,您必须检查有关如何进行不敏感匹配的文档)。如果您不能使用不区分大小写的匹配,则可以改为:
/^(4|[fF][oO][uU][rR])$/i
当然,无论你在做什么语言,也可能都有平等比较。所以你可以做(例如)
if (str == "4" || str == "four")
答案 1 :(得分:0)
答案 2 :(得分:0)
因此,您应该使用不区分大小写的比较。一些(可能是大多数)正则表达式风格将支持模式(?i)
来表示不区分大小写。
^(?i)(?:4|four)$
但如果这是JavaScript,那么你可以使用更像你开始的语法......
/^(?:4|four)$/i
在这种情况下,/i
用于不区分大小写。但是我删除了/g
,因为它是全局匹配的,在这里不需要。
请注意,我还将4|four
放入(?:non capturing)
组。当您不需要对捕获的值执行任何操作时,这比使用传统的(capturing)
组更有效。
然后围绕所有内容的^
和$
锚点将确保您没有额外的前导或后续字符。