javascript正则表达式匹配0,0-9,但不匹配0-、0-9-、0-9x
我正在尝试将文本与模式javascript正则表达式匹配0,0-9,但不匹配0-、0-9-、0-9x,javascript,regex,Javascript,Regex,我正在尝试将文本与模式0,0-9匹配,但不匹配0-,0-9-,0x,0-9x 我尝试了这些/^(\d-?\d?^[-a-zA-Z]$/和/^(\d-?\d?(!-)$/。这些都不能完全满足我的需要 你能提供更好的正则表达式并解释它是如何工作的吗?感谢您花时间来帮助解决这个问题。您可以尝试下面的正则表达式。这将不允许除数字或连字符以外的任何字符,并声明如果存在任何连字符,则必须在中间,而不是在开头或结尾 ^\d(?:-\d)?$ 或 ^\d+(?:-\d+)?$ \d+匹配一个或多个数字。所以
0,0-9
匹配,但不匹配0-,0-9-,0x,0-9x
我尝试了这些/^(\d-?\d?^[-a-zA-Z]$/和/^(\d-?\d?(!-)$/
。这些都不能完全满足我的需要
你能提供更好的正则表达式并解释它是如何工作的吗?感谢您花时间来帮助解决这个问题。您可以尝试下面的正则表达式。这将不允许除数字或连字符以外的任何字符,并声明如果存在任何连字符,则必须在中间,而不是在开头或结尾
^\d(?:-\d)?$
或
^\d+(?:-\d+)?$
\d+
匹配一个或多个数字。所以这也允许像34-56
这样的字符串
/^\d+(?:-\d+)?$/.test('0-9');
//=>true
/^\d+(?:-\d+)?$/.test('0');
//=>true
/^\d+(?:-\d+)?$/.test('0x');
//=>false