javascript正则表达式匹配0,0-9但不是0-,0-9-,0-9x

时间:2015-04-13 05:17:47

标签: javascript regex

我正在尝试使用模式0, 0-9但不是0-, 0-9-, 0x, 0-9x的匹配文字。

我尝试了这些/^(\d-?\d?)^[-a-zA-Z]$/ and /^(\d-?\d?)(?!-)$/。其中没有一个完全满足我的需要。

你能提供更好的正则表达式,并解释它的工作原理吗? Thanx花时间来帮助解决这个问题。

1 个答案:

答案 0 :(得分:2)

您可以尝试下面的正则表达式。这不会允许除数字或连字符以外的任何字符,并且这断言如果存在任何连字符,则它必须位于中间而不是在开头或结尾。

^\d(?:-\d)?$

^\d+(?:-\d+)?$

\d+匹配一个或多个数字。所以这允许像34-56这样的字符串。

DEMO

/^\d+(?:-\d+)?$/.test('0-9');
//=>true
/^\d+(?:-\d+)?$/.test('0');
//=>true
/^\d+(?:-\d+)?$/.test('0x');
//=>false