Javascript 如何使用regex测试输入值?

Javascript 如何使用regex测试输入值?,javascript,regex,Javascript,Regex,我正在开发一个输入应用程序,需要测试接受单个、多个甚至一系列数字的输入值 Eg inputs : 70,900,80-20 // should return true as all are valid as,@123 // should return false as it is not valid digit 12-123-12123-123123 // should also return false 我试图在正则表达式中使用它。我试过这个 /^[\d,\-{1}]+/ 我无法使用此正则

我正在开发一个输入应用程序,需要测试接受单个、多个甚至一系列数字的输入值

Eg inputs : 70,900,80-20 // should return true as all are valid
as,@123 // should return false as it is not valid digit
12-123-12123-123123 // should also return false
我试图在正则表达式中使用它。我试过这个

/^[\d,\-{1}]+/

我无法使用此正则表达式进行测试。让我知道我哪里做错了

此正则表达式应该适用于您:

/^\d+(-\d+)?(,\d+(-\d+)?)*$/
说明:

  • ^
    表示从字符串开头开始,拒绝在开头添加额外内容的字符串
  • \d+(\d+)
    可选择接受一个数字,后跟连字符和另一个数字:
    • \d+
      表示一个或多个数字
    • -\d+
      表示连字符加上一个或多个数字
    • (…)?
      表示括号内的图案是可选的
  • (,…)*
    接受0个或多个逗号实例,后跟与上述相同的模式
  • $
    表示匹配到字符串末尾,拒绝在末尾添加额外内容的字符串
/^\d+(-\d+)(,\d+(\d+))*$/

const input=document.querySelector('input');
const msg=document.querySelector('.msg');
常量正则表达式=/^\d+(\d+)(,\d+(\d+))*$/;
input.addEventListener('keyup',函数(e){
const str=regex.test(this.value)?“匹配!”:“不匹配”;
msg.textContent=str;
} );


关于连字符的规则是,只能有一个连字符,但后面可以跟任意数量的整数<代码>^\d+(?\d+)$
哪些字符有效?或者简单地多举几个例子。@hungerstar只能添加一个连字符。它只是简单的数字范围,例如:8-20,但这不应该是有效的8-20-80@mrReiha只允许使用单连字符和逗号。-><代码>/^\d+-?\d*$/未意识到需要包含逗号,正在更新。它甚至不满足基本条件。如果我有多个值,例如:1,12。它不匹配。@ShubhamVerma你看过我的评论了吗?您还应该澄清必须包括逗号。这不明显,代码很好。我建议在
-
之后删除
,因为这是多余的,但它也已经按原样工作了。@joanis谢谢,我尽我所能使用正则表达式,因为我不专业。它很有魅力。你能解释一下这个正则表达式吗。我不明白。只是在解释中添加了更多的细节。现在清楚了吗?如果需要,我可以增加更多。谢谢,明白了