我正在尝试使用模式0, 0-9
但不是0-, 0-9-, 0x, 0-9x
的匹配文字。
我尝试了这些/^(\d-?\d?)^[-a-zA-Z]$/ and /^(\d-?\d?)(?!-)$/
。其中没有一个完全满足我的需要。
你能提供更好的正则表达式,并解释它的工作原理吗? Thanx花时间来帮助解决这个问题。
答案 0 :(得分:2)
您可以尝试下面的正则表达式。这不会允许除数字或连字符以外的任何字符,并且这断言如果存在任何连字符,则它必须位于中间而不是在开头或结尾。
^\d(?:-\d)?$
或强>
^\d+(?:-\d+)?$
\d+
匹配一个或多个数字。所以这允许像34-56
这样的字符串。
/^\d+(?:-\d+)?$/.test('0-9');
//=>true
/^\d+(?:-\d+)?$/.test('0');
//=>true
/^\d+(?:-\d+)?$/.test('0x');
//=>false