我正在尝试匹配以下格式的输入
[Number]-[Number]
在JavaScript中使用正则表达式。
例如:
1-100
确定200-300
确定-0992
不行aa-76
不行1-
不行我试过了:
^\d+(-\d+)*$
但这根本不起作用。
任何指针?
答案 0 :(得分:4)
它不起作用的原因是*
量词使(-\d+)
成为可选项,允许正则表达式简单地匹配222
。删除它一切都会很好。如果您不需要括号,请删除它们:
^\d+-\d+$
如果您希望自己的数字在标题中介于0到100之间,该怎么办?
如果您想确保每边的数字在1到100的范围内,而没有尾随零,则可以使用此代替\d
:
100|[1-9]\d|\d
你的正则表达式会变成:
^(?:100|[1-9]\d|\d)-(?:100|[1-9]\d|\d)$
如果左边的数字必须低于正确的数字怎么办?
上面的正则表达式将接受第一个2222-1111
,第二个接受99-12
(例如)。如果您希望正确的数字大于较低的数字,您可以使用捕获括号来捕获每个数字:
^(\d+)-(\d+)$
或
^(100|[1-9]\d|\d)-(100|[1-9]\d|\d)$
然后,如果有匹配,请说
if(regexMatcher.group(2) > regexMatcher.group(1)) { ... success ...}
答案 1 :(得分:2)
您正在寻找的正则表达式是/\d+-\d+/
。如果您不要求整行与正则表达式匹配,则不需要包围^
和$
。例如:
/\d+-\d+/.test("a-100")
// Result: false
/\d+-\d+/.test("-100")
// Result: false
/\d+-\d+/.test("10-100")
// Result: true