Regex以匹配整数或单词“”;“其他”;,不区分大小写

Regex to match integers or word "other", case insensitive

本文关键字:其他 不区 大小写 整数 单词 Regex      更新时间:2024-01-17

这看起来很简单,但不起作用。我正在尝试匹配一个整数或单词"其他"(不区分大小写)。例如,给定阵列:

[1, 233, 45, "other", "the"]

只有数组中的前4项才应有效。然而,目前我的尝试将只匹配整数,而不是捕获"其他"(无论大小写不敏感)。

这是我正在使用的模式和修改器:

var regex = new RegExp("^[0-9]*|(other)$", "i"),
    match = regex.exec(value);
return match && (match.index === 0) && match[0].length === value.length;

这个想法很好,但有一些细节需要修复:

var regex = /^('d+|other)$/i;

它不是在捕获整数,而是在捕获[0-9]*。*表示零或更大,因此空字符串是有效的。A+在它的位置意味着一个或多个。

这可能比你需要的更通用,但数字通常不会以0开头,除了0本身,但如果你不介意允许前导0,[0-9]+就可以了。如果你不想匹配001这样的数字,那么你需要类似0|[1-9][0-9]*的东西。

此外,^和$的优先级高于|,这意味着您实际上正在匹配以空字符串开头的任何内容,或以"other"结尾的任何内容

^(?:[0-9]+|other)$

试试这个。请参阅演示。

https://regex101.com/r/mS3tQ7/4