我正在做一个音乐生成项目。输入只包含 alpha 字符和数字。正则表达式是我们设置为限制的要求之一。
所以,这让我的数字低于 26,但如果像 27 这样的数字显示出来,它仍然拿起 2 和 7。
/[0-2][0-5]|[1-9]/g
我应该补充...这是一个大字符串的一部分,在数字之前和之后都有字母和空格。所以我必须识别字符串中的数字并将其拉出。只使用 string.prototype.match () 和 regex。长话短说。Thx
您的[0-2][0-5]|[1-9]
正则表达式模式匹配字符串中0-2
数字后跟0-5
数字或1-9
数字任意位置的任何序列。
要匹配从1
到25
的单个值,可以使用
/\b(0?[1-9]|1[0-9]|2[0-5])\b/g
See theregex demo
图案详情:
\b
-前导词边界
(0?[1-9]|1[0-9]|2[0-5])
-两种选择之一:
0?[1-9]
-可选前导0
后跟从1
到9
的数字
1[0-9]
-10
till19
2[0-5]
-20
till25
\b
-尾随字边界
啊...所以你现在有...0-5,10-15,20-25 或 0-9
你有正确的想法,只是错误地应用了这个想法。
([01]?[0-9]|2[0-5])
// suld omit tse pesky one-offs you're seeing as mentioned in the comments.
^([01]?[0-9]|2[0-5])$
\b([01]?[0-9]|2[0-5])\b
// if you also want to exclude 0...
^([1-9]|1[0-9]|2[0-5])$
\b([1-9]|1[0-9]|2[0-5])\b
这比喻说 0 到 19 之间的任何数字(w / 或 w / o 前导 0)或 20-25。
我会建议沿着线的东西(采取或删除我添加的一些元素,因为我不知道你的确切要求)
/^(([ 01]?[1-9])|2[0-5])$/
^...$
匹配整个输入,以避免匹配两位数输入的单个数字
?
以允许一位数输入
|
以允许两种情况“第一位 = 0 或 1”和“第一位 = 2”
但总的来说,肯定有比正则表达式更好的工具来完成这项工作,比如解析数字并做一个简单的比较。
^\d$|^1\d$|^2[0-6]$
将匹配 0-26。
但是,这不是您应该使用 regex 解决的问题,更好的解决方案是使用<
或<=
等运算符测试数字:
myNum < 27 // is 0-26
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(30条)