我正在制作一个音乐生成项目。输入仅包含字母字符和数字。正则表达式是我们设定的限制要求之一。
所以,这让我得到26以下的数字,但是如果像27这样的数字显示它仍然可以拿到2和7.如何排除所有数字26及以上?谢谢!
/[0-2][0-5]|[1-9]/g
我应该添加...这是一个大字符串的一部分,在数字前后有字母和空格。所以我必须识别字符串中的数字并将它们拉出来。仅使用string.prototype.match()和regex。很长的故事。 THX
答案 0 :(得分:3)
您的[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
请参阅regex demo
模式详情:
\b
- 领先的字边界(0?[1-9]|1[0-9]|2[0-5])
- 任何一种选择:
0?[1-9]
- 可选的引导0
,后跟1
到9
的数字1[0-9]
- 10
到19
2[0-5]
- 20
到25
\b
- 尾随字边界答案 1 :(得分:2)
啊......所以你现在... 0-5,10-15,20-25或0-9
你有正确的想法,只是错误地应用了这个想法。
null
比喻性地表示0到19之间的任何数字(w /或w / o preleading 0' s)或20-25。
答案 2 :(得分:0)
我会建议一些事情(取消或删除我添加的一些元素,因为我不知道你的确切要求)
/^(([ 01]?[1-9])|2[0-5])$/
^...$
匹配整个输入以避免匹配两位数输入的单个数字?
允许输入一位数|
以允许两种情况"第一位= 0或1"和"第一个数字= 2" 但总的来说,有一些比正则表达式更好的工具来完成这项工作,比如解析数字并做一个简单的比较。
答案 3 :(得分:0)
^\d$|^1\d$|^2[0-6]$
将匹配0-26。
然而,这不是你应该用正则表达式解决的问题。更好的解决方案是使用<
或<=
等操作符测试数字:
myNum < 27 // is 0-26